计算爬楼梯的走法

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

以上是关于计算爬楼梯的走法的主要内容,如果未能解决你的问题,请参考以下文章

关于算法爬楼梯问题

爬楼梯,计算有多少种方法(1125)

3089:爬楼梯

(递归)3089:爬楼梯

走楼梯算法

爬楼梯