题目描述
一天一只顽猴想要从山脚爬到山顶,
途中经过一个有n个台阶的阶梯,
但是这个猴子有个习惯,每一次只跳1步或3步
试问?猴子通过这个阶梯有多少种不同的跳跃方式
输入描述
输入只有一个数n, 0 < n < 50
代表此阶梯有多个台阶
输出描述
有多少种跳跃方式
示例一
输入
50
输出
122106097
示例二
输入
3
输出
2
思路
根据数学归纳法得出递归算法f(x) = f(x-1) + f(x-3);
其中f(1) = 1;f(2) = 1;f(3) = 2
详细代码
import java.util.Scanner;
/**
* @Author: gyt
* @Version: 1.0
**/
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
solution(n);
}
private static void solution(int n) {
System.out.println(recur(n));
}
/**
* 思路:根据数学归纳法得出递归算法f(x) = f(x-1) + f(x-3);
* f(1) =1;f(2) =1;f(3) = 2
*/
private static long recur(int n) {
if (n == 1 || n == 2) {
return 1;
}
if (n == 3) {
return 2;
}
return recur(n - 1) + recur(n - 3);
}
}