函数递归的有关问题
函数递归的问题代码如下:[解决办法]将a设置为static变量就可以了int a 1改为 static int a 1[解决办
函数递归的问题
代码如下:
[解决办法]将a设置为static变量就可以了
int a = 1;改为 static int a = 1
[解决办法]把a和b一起传给函数
[解决办法]++
[解决办法]可以的吧! 静态变量!
传参数也行, 全局变量也行!
[解决办法]静态变量,定义在递归函数内部时,无法多次初始化。
当其它函数,调用递归函数两次以上时,就会出问题。
[解决办法]静态变量,定义在递归函数内部时,无法多次初始化。
当其它函数,调用递归函数两次以上时,就会出问题。
初始化放在其他地方呢?
[解决办法]改成尾递归。 少用全局变量或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;
}