2016-08-26 4 views
0

ゴーグルを学ぶ、問題を解決する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.Exit(0)'を使用する予定だったので、 。 – deltaskelta