0

Learning golang, proect euler problem 5. I was messing around with a recursive function and I could not figure out a way to get the return value to be correct.

In go I cannot take out the return at the end of the five() function and I also cannot get it to return the right value to execute the if statement in the main() function...

I realize I can do this without the recursion but I would like to know how to do it with recursion if possible.

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")
        }
    }
}
2
  • 1
    shouldn't that be return recursive(num, div-1)? Commented Aug 26, 2016 at 3:22
  • 1
    I believe it should also be: if div == 1 { return 1 } Commented Aug 26, 2016 at 3:25

1 Answer 1

1

Oh, and besides the comments above, it should also break once the answer is found.

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;
        }
    }
 }
Sign up to request clarification or add additional context in comments.

1 Comment

Yes I was missing the return, I had commented out the os import because I was going to use os.Exit(0).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.