//第一次尝试:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
//f(1) = 1;
//f(2) = f(1) + 1 = f(1) + f(1) = 2 * f(1) = 2;
//f(3) = f(2) + f(1) + 1 = f(2) + f(1) + f(1)= f(2) + 2 * f(1) = f(2) + f(2) = 2 * f(2) = 2 * 2;
//f(k) = f(k - 1) + f(k - 2) + … + f(2) + f(1) + 1
// = f(k - 1) + f(k - 2) + … + f(3) + f(2) + f(1) + f(1)
// = f(k - 1) + f(k - 2) + … + f(3) + f(2) + f(2)
// = f(k - 1) + f(k - 2) + f(k - 3) + … + f(3) + f(3)
// = 2 * f(k - 1)
int FrogJumps(int n) {
if (n == 1) {
return 1;
}
else {
return 2*FrogJumps(n - 1);
}
}
int main() {
int n = 0;
printf("输入青蛙一次最多可以跳几个台阶:\n");
scanf("%d", &n);
int m = n;
int ret = FrogJumps(n,m);
printf("%d\n", ret);
return 0;
}
//本题看起来很可怕,但是仔细算一算,还是可以找到递推公式的
//f(k) = 2 * f(k - 1) 条件:k>2