Go语言实现:【剑指offer】变态跳台阶
该题目来源于牛客网《剑指offer》专题。
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
找规律:
1阶:1种;
2阶:2种;
3阶:4种;
4阶:8种;
n阶:2f(n-1)种;
或者:
n-1阶:f(n-2)+f(n-3)+…f(1)+f(0)
n阶:f(n-1)+f(n-2)+…f(1)+f(0) => 2f(n-1)
得出一个斐波那契函数。
Go语言实现:
方法一:递归
func jumpFloor2(N int) int {
if N <= 0 {
return 0
}
if N == 1 || N == 2 {
return N
}
return 2 * jumpFloor2(N-1)
}
方法二:迭代
func jumpFloor2(N int) int {
if N <= 0 {
return 0
}
if N == 1 || N == 2 {
return N
}
b := 2
for i := 3; i<= N;i++ {
b = 2 * b
}
return b
}