算法题:青蛙跳台阶
问题
一只青蛙可以一次跳 1 级台阶或者一次跳 2 级台阶。
问要跳上第 n级台阶有多少种跳法?
思考
逆向思维:如果青蛙要跳上第 n级台阶,只有两个中情况
一、从第 n−1 级台阶跳一级上来
二、从第 n−2级台阶跳两级上来
这种就跟斐波拉契数列完全符合:f(n)=f(n−1)+f(n−2)
代码
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int Fibo(int n){
if(n==1){
return 1;
}else if(n==2){
return 2;
}else{
return Fibo(n-1) + Fibo(n-2);
}
}
int main(int argc, char *argv[]) {
int num, temp;
printf("台阶数:");
scanf("%d",&num);
temp = Fibo(num);
printf("共有%d种跳法",temp);
return 0;
}