青蛙跳台阶问题

题目描述:

一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶。求该青蛙跳上一个 n 级的台阶总共有多少种跳法。

答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。

实例:

输入:n = 2
输出:2

输入:n = 7
输出:21

输入:n = 0
输出:1

提示:

  • 0 <= n <= 100

思路:

递归问题,与求斐波那契数列第 n 项值相似。 青蛙在第 n 级台阶,可从第 n-1 级台阶跳一级上去,也可从第 n-2 级台阶跳两级上去,函数表达式即:f(n) = f(n-1) + f(n-2)

实现:

package main

import (
	"fmt"
)

func main() {
	t := numWays(7)
	fmt.Println(t) //21
}

func numWays(n int) int {
	a, b := 0, 1
	for i := 0; i < n; i++ {
		a, b = b, (a+b)%1000000007
	}
	return b
}

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部