golang递归函数如何检查返回?

时间:2016-08-26 02:52:20

标签: go

学习golang,讨论euler问题5.我正在弄乱一个递归函数,我无法想办法让返回值正确。

在go中我无法取消five()函数末尾的返回值,我也无法让它返回正确的值来执行main()函数中的if语句... < / p>

我意识到我可以在没有递归的情况下做到这一点,但我想知道如果可能的话如何使用递归。

package main

import (
    "fmt"
    //"os"
)

func recursive(num int, div int) int {

    if div == 1 {
        fmt.Println(num)
        return num
    }
    switch num % div {
    case 0:
        recursive(num, div-1)
    default:
        return -1
    }
    return num
}

func main() {
    for i := 20; ; i += 20 {
        if recursive(i, 19) == 1 {
            fmt.Println("finished")
        }
    }
}

1 个答案:

答案 0 :(得分:1)

哦,除了上面的评论之外,一旦找到答案,它也应该中断。

package main

import (
    "fmt"
    //"os" 
)

func recursive(num int, div int) int {
    if div == 1 {
         return 1
    }
    switch num % div {
    case 0:
        return recursive(num, div-1)
    default:
        return -1
    }
    return num
 }

 func main() {
    for i := 120; ; i += 20 {
        if recursive(i, 19) == 1 {
            fmt.Printf ("finished with %v\n", i)
            break;
        }
    }
 }