递归算法的问题

来源:百度知道 编辑:UC知道 时间:2024/05/27 13:49:41
自己编写的一个函数
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的值只被初始化一次

不会吧?
变量的作用域问题呀

直接在子函数里定义其他变量名,在父函数里定义的,子函数当然可以调用

最好把所有整个函数贴上来。