伪善丿 2022-04-16 18:21 采纳率: 80%
浏览 38
已结题

一个简单c语言程序解过程不太懂

#include <stdio.h>
int f(int n)
{
int s=0,i;
if(n==0||n==1)
return 1;
for(i=n-1;i>=0;i--)
s+=f(i)*f(n-1-i);
return s;
}
int main()
{
int i;
for(i=1;i<=;i++)
printf("%d=%d\n",i,f(i));
return 0;
}
记过 1=1 2=2 3=5 4=14
过程不太了解憋了10多分钟,只知道1满足条件返回1 当n=2 我就算不明白了 ,有没有心细的人解答一下,蟹蟹

  • 写回答

1条回答 默认 最新

  • 陆海潘江小C 2020CSDN博客之星Top85 2022-04-16 18:31
    关注

    这是递归函数,n=2时候,进入这段代码:

    for(i=n-1;i>=0;i--)
       s+=f(i)*f(n-1-i);
    

    可以计算得到,n=2,i=1开始循环,f(1)*f(2-1-1)=f(1)*f(0)=1,再加上n=1时候的1,s=2.
    f(3)=f(1)+f(1)*f(0)+f(2)*f(1)
    后面以此类推。
    如有帮助,题主采纳一下

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月16日
  • 已采纳回答 6月16日
  • 创建了问题 4月16日