递归;单个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;  }

...全文
107 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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

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

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧