递归;单个f()的递归我明白,我理解的是2*f(n-1,x)的结果是8,3*f(n-2,x)的结果是6,2*f(n-1,x)+3*f(n-2,x)等于8+6=14,但正确答案是20,

xiaobai0328 2022-05-20 20:30:58

#include <stdio.h>

   int f(int n, int x)

{

   if(n==0) return 1;

   if(n==1) return x;

   return 2*f(n-1,x)+3*f(n-2,x);

}

int main()

{    printf("%d",f(3,2));  return 0;  }

...全文
50 6 打赏 收藏 举报
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复

f(3, 2)转成f(2, 2)代进去,f(2, 2)转成f(1, 2)代进去... 就是:
f(3, 2) =
2f(2,2)+3f(1,2)
=
2*(2f(1,2)+3f(0,2))+3*f(1,2)
=
2 * ( 2 * 2 + 3 * 1) + 3 * 2
=
20

  • 打赏
  • 举报
回复
精选
@日立奔腾浪潮微软松下联想 明白了,谢谢
  • 举报
回复
zara 05-21
不是 8,是 14,f(2.2)=2*f(1.2)+3*f(0.2)=2*2+3=7
  • 打赏
  • 举报
回复 1
@zara 麻烦你说的再详细一点点
  • 举报
回复
@zara 第一次是3*f(1,2),第二次再减2不应该等于f(-1,2)的吗
  • 举报
回复
展开其他1条回复
发帖
C语言
加入

6.6w+

社区成员

C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
申请成为版主
帖子事件
创建了帖子
2022-05-20 20:30
社区公告
暂无公告