学习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")
}
}
}
答案 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;
}
}
}