Go语言递归函数
递归,就是在运行的过程中调用自己。
一个函数调用自己,就叫做递归函数。
构成递归需具备的条件:
1、子问题须与原始问题为同样的事,且更为简单。
2、不能无限制地调用本身,须有个出口,化简为非递归状况处理。
Go编程语言支持递归,即函数调用函数本身。在使用递归时,需要谨慎确定函数的退出条件,否则会造成无限循环。
递归函数可以解决许多数学问题,如计算给定数字阶乘、产生斐波系列等;
数字阶乘
一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。
亦即n!=1×2×3×…×n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!×n。
使用一个递归函数由给定数计算阶乘,实例如下:
package main import "fmt" func factorial(i int) int { if i <= 1 { return 1 } return i * factorial(i-1) } func main() { var i int = 9 fmt.Printf("Factorial of %d is %dn", i, factorial(i)) }
斐波那契数列(Fibonacci)
斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:1、1、2、3、5、8、13、21、34、……
这个数列从第3项开始,每一项都等于前两项之和。
使用一个递归函数由给定的一个数产生斐波那契数列,实例如下:
package main import "fmt" func fibonaci(i int) int { if i == 0 { return 0 } if i == 1 { return 1 } return fibonaci(i-1) + fibonaci(i-2) } func main() { var i int for i = 0; i < 10; i++ { fmt.Printf("%dn", fibonaci(i)) } }
特别声明:以上文章内容仅代表作者本人观点,不代表变化吧观点或立场。如有关于作品内容、版权或其它问题请于作品发表后的30日内与变化吧联系。
- 赞助本站
- 微信扫一扫
-
- 加入Q群
- QQ扫一扫
-
评论