永发信息网

C++递归函数记忆化return的问题

答案:3  悬赏:70  手机版
解决时间 2021-03-24 08:26
C++递归函数记忆化return的问题
最佳答案
不用return,函数值不能返回!
int m[100];
 int f(int n)
 {  
  if(n==1)  { return 1; }
  else if(n==2) { return 2; }
  if(m[n]>0)
      return m[n];
  return  m[n]=f(n-1)+ f(n-2);
 }这个程序,似乎是生成斐波那契数列的第n项,但是程序有问题。
n=1,f(n)=1;
n=2,f(2)=2;
n≥3:
m[n]>0,f(n)=m[n],这个值已经求出过,因此直接返回;
m[n]≤0,计算这个斐波那契数列项的值,并且返回这个值。此时使用了递归调用。
在使用这个函数之前,要将m数组,设置成m[1]=1,m[2]=2,以后各项设置为0或任意负数(表示此值不是斐波那契数列的值,没有计算)。
m[0]用不到。
全部回答
如果不return,程序最终是从return m[n];这里返回的结果,截然和 return m[n]=f(n-1)+ f(n-2);这里返回的计算结果不一样,所以需要的正确计算结果必须是 return m[n]=f(n-1)+ f(n-2);返回的。
return是将这个值返回到调用这个函数的函数里面去。你当然可以直接把递归写到主函数就不需要用return了。但是那样的话你其他函数如果需要调用递归你又要写一遍。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
刚铁侠2电影全集 视频
为何手机开启微信锁定功能经常不管用
向NaBr、NaI、Na2S03混合液中,通入过量氯气
雷神1和2是一个主演吗
具有充电桩龙头股票前三名是哪些
将夜哪里写主角穿越重生了?第几章?
macbook pro 15寸 屏幕翻开的时候偏向一边翻
奇葩老公每次讨好我后就找我借钱,一借给他就
黄村西大街至今日头条怎么走
MOS管中VGS的作用
单选题下列句式与其他三句不同的是A.噌吰者,
被和谐了是什么意思,抑扬顿挫和谐动听开卷有
“综合考虑这些因素”英语怎么说
近距离攻击精力消耗降低到底影响不影响武技的
如何驱赶鸟儿
推荐资讯
高适与董大分别时说什么?
这又是啥成语
网易等网站向计算机用户长期提供免费邮箱服务
阅读文言文,完成第10~14题。(10分)魏绛谏
盛联华戴尔专卖店这个地址在什么地方,我要处
湘食惠怎么去啊,有知道地址的么
记得有一首闽南语歌词 人生啊人生谁人无风波,
下岩脚地址在哪,我要去那里办事
网站为什么需要做SEO
不然的大概意思,说一个人很小资 是什么意思?
梦幻国度急求 强化钉耙/糖衣猪具体位置?
炎热的夏天,城市的平均气温比周围乡村高一些
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?