首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

函数递归的有关问题

2013-11-23 
函数递归的问题代码如下:[解决办法]将a设置为static变量就可以了int a 1改为 static int a 1[解决办

函数递归的问题
代码如下:

                                                                            
[解决办法]
将a设置为static变量就可以了
int a = 1;改为 static int a = 1

[解决办法]
把a和b一起传给函数
[解决办法]
引用:
把a和b一起传给函数
++
[解决办法]
引用:
Quote: 引用:

将a设置为static变量就可以了
int a = 1;改为 static int a = 1
静态变量不行


可以的吧! 静态变量! 
传参数也行, 全局变量也行!
[解决办法]
静态变量,定义在递归函数内部时,无法多次初始化。
当其它函数,调用递归函数两次以上时,就会出问题。


[解决办法]
引用:
静态变量,定义在递归函数内部时,无法多次初始化。
当其它函数,调用递归函数两次以上时,就会出问题。

初始化放在其他地方呢?
[解决办法]
改成尾递归。 少用全局变量或static
[解决办法]
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出

[解决办法]
其实可以写个函数,调用那个递归函数,外部不使用递归函数。

[解决办法]
另外这个函数,写的有问题
float res ;

res 没有初始化,a >= b  的时候,返回值不确定。
这应该不是,这个函数所需要的吧。


写成这样是否能达到你的目的?

float fun(int a,float b)
{
    float res = 0;
    float sqrt();
    if (a < b)
        res = sqrt(1 + (a + 1)* fun(a + 1,b));
    else
        return res;
}

热点排行