递归算法的问题

自己编写的一个函数
create bp(n)
{
int i;
int j;
i=...;
j=...;
.....create bp(m)
a(i);
b(j);
}
就是在递归调用函数create bp(m)的时候,原始函数create bp(n)中的i j 值已经改成了create bp(m)中的i j值,而我不希望改变,请问这种情况该如如解决。
(直接在子函数里定义其他变量名,在父函数里定义的,子函数当然可以调用)?(我认为 函数调用自身,变量也是共用的啊)也就是 i j的值在内嵌调用 create(m)时,有一个值,但是我希望推出create(m)时,ij 的值为原先create(n)得值 ,该如何定义变量类型?

static 定义成静态变量即可
例:
void a()
{
static i=0;
assert(++i<10);
a();
}
程序递归十次就会跳出,i的值只被初始化一次
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-12-08
不会吧?
变量的作用域问题呀
第2个回答  2008-12-08
直接在子函数里定义其他变量名,在父函数里定义的,子函数当然可以调用
第3个回答  2008-12-08
最好把所有整个函数贴上来。
相似回答