递归
函数自己调用自己
连续自然数相加
Go语言实现
package main
import "fmt"
//求连续自然数的和 1+2+...+n
func main() {
fmt.Println(f(10))
}
func f(n int) (sum int) {
// 回归
if n == 1 {
return 1
}
// 递进-自己调用自己 10+9+...+1
return n + f(n-1)
}
php实现
<?php
//求连续自然数的和 1+2+...+n
var_dump(f(10));
function f($n)
{
if ($n == 1) {
return 1;
}
return $n + f($n - 1);
}
斐波那契数列
递归求斐波那契数列第N项的值,例如:第10为55
Go语言实现
package main
import "fmt"
//斐波那契数列-经常用来衡量机器的计算能力
//1 1 2 3 5 8 13 21 34 55...
func main() {
fmt.Println(GetFibonacci(10))
}
/*递归求斐波那契数列第N项的值*/
func GetFibonacci(n int) int {
// 回归
if n == 1 || n == 0 {
return n
}
// 递进
return GetFibonacci(n-1) + GetFibonacci(n-2)
}
php实现
//求N=3的值是多少
//两条递归线思路
// GetFibonacci(3 - 1)
// GetFibonacci(2) = GetFibonacci(1) + GetFibonacci(0) = 1 + 1
//GetFibonacci(3 - 2)
// GetFibonacci(1) = 1
结果:2+1 = 3
<?php
//斐波那契数列-经常用来衡量机器的计算能力
//1 1 2 3 5 8 13 21 34 55...
var_dump(GetFibonacci(10));
function GetFibonacci($n)
{
// 回归
if ($n == 1 || $n == 0) {
return $n;
}
// 递进
return GetFibonacci($n - 1) + GetFibonacci($n - 2);
}