3

これが私のコードです:

let rec sum n =  
    if n <= 0 then 0
    else if n / 2 * 2 = n then 3 * n + 50 * (sum n-2)
    else n + 10 * (sum n-1);;

数学の問題は次のように簡単です。

sn =
    0 if n = 0
    50*sn-2 + 3*n, if n > 0 and n is even
    10*sn-1 + n  , if n > 0 and n is odd

テストするとsum 5、次のように「スタックオーバーフロー」エラーが発生しました。

評価中のスタック オーバーフロー (ループ再帰?)。

誰か助けてくれませんか?

4

2 に答える 2