且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

learn go recursive

更新时间:2022-08-12 21:11:43

package main

// 参考文章:
//     https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/06.6.md

import (
    "fmt"
)

func main () {
     fmt.Printf("%d is even: is %t\n", 16, even(16)) // 16 is even is true
    fmt.Printf("%d is odd: is %t\n", 17, odd(17))
    // 17 is odd: is true
    fmt.Printf("%d is odd: is %t\n", 18, odd(18))
    // 18 is odd: is false
}

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
}