问题:一个猴子要爬上xx级台阶,每次只能跳1级或3级台阶,问xx级台阶有几种跳法。
算法:本题较为简单运用递推算法。例如爬上第30级台阶只有两种方法:29+1 或 27+3。所以要得到跳法总数需要把两种方法加在一起。
代码实现:
int Jump(int num){
if(num > 3) return Jump(num - 1) + Jump(num - 3);
else if(num == 1) return 1;
else if(num == 2) return 1;
else if(num == 3) return 2;
}
测试:
int main(){
int num;
cout<<"Please input the num of steps : "<<endl;
cin>>num;
cout<<"Here are "<<Jump(num)<<" ways you can do."<<endl;;
return 0;
}
输出:
Please input the num of steps :
30
Here are 58425 ways you can do.