就是函数自己调用自己
举个例子,阶乘:
package main
import "fmt"
// 3! = 3*2*1 = 3*2!
// 4! = 4*3*2*1 = 4*3!
// 5! = 5*4*3*2*1 = 5*4!
func f1(n int) int {
if n <= 1 {
return 1 //程序退出条件
}
return n * f1(n-1)
}
func main() {
ret := f1(5)
fmt.Println(ret)
}
递归一定要有一个确定的退出条件,递归时候处理那种问题相同,问题的规模越来越小的场景
上台阶问题
n个台阶,一次可以走一步,也可以走两步,有多少种走法
package main
import "fmt"
//n个台阶,一次可以走一步,也可以走两步,有多少种走法
func taijie(n int) int {
if n == 1 {
return 1
}
if n == 2 {
return 2
}
//这两个if是判断最后一步是几种走法
return taijie(n-1) + taijie(n-2) //-1是都一步一步的走,-2是两步两步的走
}
func main() {
ret := taijie(20)
fmt.Println(ret)
}
标签:return,递归函数,int,fmt,taijie,func,main
From: https://www.cnblogs.com/suknna/p/17103287.html