分析:从最后一步分析,能有的情况有三种情况构成,写出如图所示的方程
//和斐波拉契相似 int void f(int n) { //考虑出口 if(n==0) return 0;//正常思路是返回0 if(n==1) return 1;//通过自己想可以得出只有1种方式 if(n==2) return 2;//通过自己想可以得到只有2种方法 return f(n-1)+f(n-2)+f(n-3);//递归计算 }
但是在验算的时候发现当n=3的时候,结果为f(2)+f(1)+f(0)=3;不符合,通过思考应该是4种,所以把n==0时返回1
验算思路如图所示
最终代码:
//和斐波拉契相似 int void f(int n) { //考虑出口 if(n==0) return 1;//正常思路是返回0 if(n==1) return 1;//通过自己想可以得出只有1种方式 if(n==2) return 2;//通过自己想可以得到只有2种方法 return f(n-1)+f(n-2)+f(n-3);//递归计算 //但是在验算的时候发现当n=3的时候,结果为f(2)+f(1)+f(0)=3;不符合,通过思考应该是4种,所以把n==0时返回1 }