zoukankan      html  css  js  c++  java
  • go 递归函数

    一、什么是递归函数?

      当一个函数在其函数体内调用自身,则称之为递归。

    二、引用经典例子:斐波那切数列

    package main
    
    import "fmt"
    
    func main(){
    	result := 0
    	for i := 0; i <= 10; i++ {
    		result = fibonacci(i)
    		fmt.Printf("fibonacci(%d) is: %d
    ", i, result)
    	}
    }
    
    func fibonacci(n int )(res int){
    	if n <= 1{
    		res = 1
    	}else {
    		res = fibonacci(n-1) + fibonacci(n-2)
    	}
    	return
    }
    //输出:

    fibonacci(0) is: 1
    fibonacci(1) is: 1
    fibonacci(2) is: 2
    fibonacci(3) is: 3
    fibonacci(4) is: 5
    fibonacci(5) is: 8
    fibonacci(6) is: 13
    fibonacci(7) is: 21
    fibonacci(8) is: 34
    fibonacci(9) is: 55
    fibonacci(10) is: 89

      调用前两个数,相加,得到值。

    三、相互闭环调用

    package main
    
    import "fmt"
    
    func main() {
    	fmt.Printf("%d is event: is %t 
    ", 16, even(16))
    	fmt.Printf("%d is odd: is %t
    ", 17, odd(17))
    	fmt.Printf("%d is odd: is %t
    ", 18, odd(18))
    }
    
    func even(nr int) bool {
    	if nr == 0 {
    		return true
    	}
    	return odd(RevSign(nr) - 1)
    }
    
    func odd(nr int) bool {
    	if nr == 0 {
    		return false
    	}
    	return even(RevSign(nr) - 1)
    }
    
    func RevSign(nr int) int {
    	if nr < 0 {
    		return -nr
    	}
    	return nr
    }
    输出:

    16 is event: is true
    17 is odd: is true
    18 is odd: is false

      

  • 相关阅读:
    1414 冰雕
    1475 建设国家(优先队列)
    Digit Division
    Sleep Buddies
    Reverse and Compare(DP)
    1536 不一样的猜数游戏
    Genealogical tree
    网站日志实时分析工具GoAccess使用
    CentOS下一键安装Openstack
    权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现2
  • 原文地址:https://www.cnblogs.com/liubiaos/p/9367106.html
Copyright © 2011-2022 走看看