0

最初の n 個の数値の二乗和を計算しようとしています。コードは次のとおりです。

fun sumSq 0 = 0 |
    sumSq x = x + sumSq(x * x-1);

キャッチされない例外の Overflow[overflow] エラーが発生します。

4

1 に答える 1

1

sumSq(x * x-1)はsumSq((x * x)-1)とまったく同じであり、sumSq(x *(x-1))とは異なります。

結果 :

   if x = 0 or 1 it's ok.
   if x is greater than 1 (5 for example) 

   sumSq 5 = 5 + sumSq( 5 * 5-1 ) = 5 + sumSq(24) x will never decrease!!!

あなたは無限ループを持っています

于 2013-01-26T15:55:54.173 に答える