一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
我的思路:
此题相当于求斐波那契数列,不同的是,当n=1时青蛙只有一种跳法,当n=2时,青蛙总共共有两种跳法即挑1阶台阶或者跳2阶台阶。当n>=3时此时青蛙一共的跳法F(n)=F(n-1)+F(n-2)即求斐波那契数列。
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
//递归实现
int Fib(int n) {
if (n == 1) {
return 1;
}
if (n == 2) {
return 1;
}
return Fib(n - 1) + Fib(n - 2);
}
//非递归实现
int Fib2(int n) {
if (n == 1) {
return 1;
}
if (n == 2) {
return 1;
}
int last1 = 1;
int last2 = 1;
int current = 0;
for (int i = 3; i <= n; i++) {
current = last1 + last2;
last2 = last1;
last1 = current;
}
return current;
}
int main() {
int num = 0;
printf("请输入您要求出的数:\n");
scanf("%d", &num);
printf("第%d个数的值为:%d\n", num, Fib(num));
//printf("第%d个数的值为:%d\n", num, Fib2(num));
system("pause");
return 0;
}
运行截图就不放了,如果想要详细了解斐波那契数列问题,请参考我的上一篇博文,如有错误或理解不当之处,请指正,谢谢!