【发布时间】:2021-11-16 10:06:33
【问题描述】:
我想在 gnuplot 中测试一个递归函数。 下面是函数
factorial(n)= ((n==1?sprintf("1"):sprintf("%f",n*factorial(n-1))))
当 factorial(100) 测试时,它看起来不错
93326215443944102188325606108575267240944254854960571509166910400407995064242937148632694030450512898042989296944474898258737204311236641477561877016501813248.000000
为了使数字成为整数,我像这样更改了 sprintf
factorial(n)= ((n==1?sprintf("1"):sprintf("%d",n*factorial(n-1))))
但是,结果很奇怪;它似乎超出了整数大小的范围?
-2147483648
所以我改变了实数类型的函数,没有低于浮点数的数字
factorial(n)= ((n==1?sprintf("1"):sprintf("%.0f",n*factorial(n-1))))
但是,结果比较奇怪,
-75703234367175440481992733883343393025021587121454605713387911182978138051561570016048371488788270318477285688499861254195149884149214115360733197762560
你能解释一下它是什么吗? 谢谢,
【问题讨论】:
-
即使没有 Ethan 解释的背景,您的
factorial(100)看起来也不好!由于您将数字从 1 乘以 100,因此结果的最后一位应该是很多零(我猜至少是 20),但绝对不是...13248。
标签: function recursion floating-point gnuplot factorial