问:有N个台阶,一次可以迈一个台阶或者两个台阶,问有多少种走法?
package main
import "fmt"
//递归算法,耗费大量资源
//func steps(n int) int {
// if n == 1 {
// return 1
// }
// if n == 2 {
// return 2
// }
// return steps(n-1) + steps(n-2)
//}
//算法优化后
func steps(n int) int {
var (
t1 = 1
t2 = 2
tn = 0
)
if n == 1 {
return t1
} else if n == 2 {
return t2
}
for i := 3; i <= n; i++ {
tn = t1 + t2
t1 = t2
t2 = tn
}
return tn
}
func main() {
n := steps(10)
fmt.Println(n)
}