Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
最初の n 個の数値の二乗和を計算しようとしています。コードは次のとおりです。
fun sumSq 0 = 0 | sumSq x = x + sumSq(x * x-1);
キャッチされない例外の Overflow[overflow] エラーが発生します。
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!!!
あなたは無限ループを持っています