2016-08-26 132 views
0

学习golang,proect euler问题5.我在乱搞一个递归函数,我找不到一个方法来获取返回值是正确的。golang递归函数如何检查return?

在旅途中我不能拿出在five()函数的最后回报,我也不能让它回到正确的价值在main()函数来执行if语句...

我意识到我可以做这个没有递归,但我想知道如何做到这一点与递归如果可能的话。

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

不应该是'return recursive(num,div-1)'? – Pyonsuke

+1

我认为它也应该是: 如果div == 1 { return 1} – Seva

回答

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; 
     } 
    } 
} 
+0

是的我错过了返回,我已经注释掉了'os' import,因为我打算使用'os.Exit(0)' 。 – deltaskelta