#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<=4;i++)
printf("%d=%d\n",i,f(i));
return 0;
}
记过 1=1 2=2 3=5 4=14
过程不太了解憋了10多分钟,只知道1满足条件返回1
当n=2 进入循环 f(1)f(0)=1,f(0)(1)=1 s=2
当n=3 进入循环 f(2)(1) =2, f(1)*(0)=1,f(0)*f(1) s=4 结果是5
,就有点懵了 n=4就更不知道了
有没有心细的人解答一下,蟹蟹
f是个递归函数
它怎么递归的你其实不用一步一步的去看
你只要知道它的功能是求通项是f(i)f(n-1-i)的级数和
还知道f(0)=1,f(1)=1
那么f(2)=f(0)*f(1)+f(1)*f(0)=2
f(3)=f(0)*f(2)+f(1)*f(1)+f(2)*f(0)=2+1+2=5
f(4)=f(0)*f(3)+f(1)*f(2)+f(2)*f(1)+f(3)*f(0)=5+2+2+5=14
当n=2的时候,你写错了
是f(2)f(0). f(1)f(1).f (0)f(2)