package main

import (
        "fmt"
        "log"
        "os"
        "strconv"
)

func goconcfib(n int) chan int {
        result := make(chan int)
        go concfib(n, result)
        return result
}

func concfib(n int, output chan int) {
        if n < 2 {
                output <- 1
        } else {
                a, b := goconcfib(n-1), goconcfib(n-2)
                output <- (<-a) + (<-b)
        }
        close(output)
}

func main() {
        number, err := strconv.Atoi(os.Args[1])
        if err != nil {
                log.Fatal(err)
        }

        fmt.Printf("fib(%d) = %d\n", number, <-goconcfib(number))
}

-- 
To unsubscribe: http://lists.canonical.org/mailman/listinfo/kragen-hacks

Reply via email to