计算爬楼梯的走法
Posted gyyyl
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算爬楼梯的走法相关的知识,希望对你有一定的参考价值。
对于一个给定步数的楼梯,一次可以向前走一步或者两步,计算有多少种走法
如果使用递归的方法计算,那么会很容易,就是func(n-1)+func(n-2),但是当楼梯步数很多的时候,这个方法是不行的,但是我们可以借鉴他的思想,就是对于有n阶的楼梯,他的走法等于n-1阶楼梯的走法加上n-2阶楼梯的走法。
所以为了避免当N很大的时候难以计算,我们使用两个变量存储中间结果,第一个变量是n-1阶楼梯的走法数量,第二个变量是n-2阶楼梯的走法数量
package main import "fmt" // 给定一个步数的楼梯,每次可以选择向前走一步或者两步,计算一共有多少种走法 func main() { fmt.Println(climbStairs(2)) fmt.Println(climbStairs(3)) fmt.Println(climbStairs(4)) fmt.Println(climbStairs(5)) } func climbStairs(n int) int { twoStepLess, oneStepLess := 1, 2 if n < 3 { return n } for i := 3; i <= n; i++ { tmp := twoStepLess + oneStepLess twoStepLess = oneStepLess oneStepLess = tmp } return oneStepLess }
这个思路其实和递归反着来的,递归算法是从n计算到1或者2,这个算法就是从1或者2计算到n
以上是关于计算爬楼梯的走法的主要内容,如果未能解决你的问题,请参考以下文章