Go 语言递归函数
Go 语言递归与C语言基本一样。调用递归时,根据逻辑设置退出条件,否则递归将陷入无限循环中。
语法格式如下:
func recursion() {
recursion() /* 函数调用自身 */
}
func main() {
recursion()
}
package main
import "fmt"
/*N 的阶乘问题*/
/*0! ---> 0 1!---->1 2! --->2*1 n! --> n*(n - 1)*/
func Factorial(n uint64)(result uint64) {
if (n > 0) {
result = n * Factorial(n-1)
return result
}
return 1
}
/*斐波那契数*/
func fubonacici(n int) int{
if n > 2{
return n
}
return fubonacici(n-2) + fubonacici(n-1)
}
/*斐波那契数列网上看到的,这个是利用Go语言独特的多值赋值特性*/
func fibonacci2(n int) (int,int) {
if n < 2 {
return 0,n
}
a,b := fibonacci2(n-1)
return b,a+b
}
func fibonacci_new(n int) int {
a,b := fibonacci2(n)
return b+a
}
func main() {
var i int = 0
fmt.Scanln(&i)
fmt.Printf("%d 的阶乘是 %d\n", i, Factorial(uint64(i)))
fmt.Printf("输入N:%d,斐波那契数列值为:%d\n",i,fubonacici(i))
fmt.Printf("新式写法,输入N:%d,斐波那契数列值为:%d\n",i,fibonacci_new (i))
}
3
3 的阶乘是 6
输入N:3,斐波那契数列值为:3
新式写法,输入N:3,斐波那契数列值为:3