问一下这个计算机二级题递归调用问题

img

img


就是不理解这个fun函数的递归调用,比如说第一个fun函数递归到最后是fun(2,&f1)那么接下来该怎么办还有怎么将fun(2,&f1)的值返回前一个递归,就是fun(2,&f1)的值是为什么,求解答,麻烦一步一步演示最好有图理解,感谢!

斐波那契数列 递归 理解

看看fun函数

代码不全呀

具体,还真没办法具体。

函数式/声明式--本来就不讲究具体过程,只讲究声明

那么我们看他的声明 a[0]+fun(a+1,k-1)-----------结合fun(6,10)来看,那么这个声明的意思是啥?
很明显 他的意思是 以6为初始值,1为公差的等差数列,对数列N求和。其实他就是讲数学描述声明
如果我们换成你高中课程能明白的,不就是
6,7,8,9,10,11,12,13,14,15 这个数列求和

如果你看懂了那个申明,自己代进去看看
6+fun(6+1,10-1)--这个进去以后是 7+fun(8,9-1)
最后结果不就是

6+7+8+-------15+fun(16,1-1)//最后这个1-1就可以控制退出了

当然,如果你说这个题目选几,我个人回答是“我不知道”,因为你截的图不完整,我的描述是int,而题目描述是a[0],那么a[0]是个什么鬼,还有个初始数组么??
同样控制退出条件 int x又是啥鬼,没初值么?那就是0。上面的控制代码不全,没法得出答案


额,你又贴了第2图,上面回复你忽略吧,不过我保留回复。意思还是那个意思,玩这个别纠结递归不递归。看明白他的声明,就像你高中学的知识
假设 a是啥,b是啥,那么a+b是啥就是这种东西含义
至于第2题,还就是斐波拉契数列的 数学申明,a= fun(a-1)+fun(a-2),所以第一楼给你兔子队列的资料木毛病啊。别说啥具体,讲声明式的时候,只讲声明,不讲具体。

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

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632