2016-08-26 70 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