2016-04-08 26 views
0

Iのみ奇数または階乗のみ二重の要素を計算するために、階乗再帰を変更すべきである方法、例えば場合:?[宿題]

multiplyOdds(4) 

結果は1 * 3 * 5 * 7 = 105を返す必要があります。

再帰の仕組みを知っています。

答えて

0

あなたの関数multiplyOdds(n)は、最初にnの奇数を乗算する必要がありますか? n番目の奇数が2 * n - 1に等しいとすれば、以下のような再帰的解をHaskellで簡単に書くことができます。

multiplyOdds :: Int -> Int 
multiplyOdds n = multiplyOddsTail n 1 

multiplyOddsTail :: Int -> Int -> Int 
multiplyOddsTail n acc = case n of 
    1 -> acc 
    n -> multiplyOddsTail (n - 1) (acc * (n * 2 - 1))