Sml 这个代码哪里出了问题?

Sml 这个代码哪里出了问题?,sml,smlnj,Sml,Smlnj,我试图计算前n个数的平方和。代码如下: fun sumSq 0 = 0 | sumSq x = x + sumSq(x * x-1); 我收到一个未捕获的异常溢出[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 *

我试图计算前n个数的平方和。代码如下:

fun sumSq 0 = 0 |
    sumSq x = x + sumSq(x * x-1);
我收到一个未捕获的异常溢出[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!!!

你可能有一个无限循环

x*x+sumsq(x-1)
?看起来它应该在任何语言中使用无限精度的算术来堆栈溢出。是的,这就完成了。谢谢