第2段代码是对的,第1段代码中问题应该在 public static double num(int x) 中,整个运算都是整形运算,
为什么要加入DOUBLE浮点运算呢? 你把DOUBLE 该成LONG就没有问题了。
另外,运算方面有点问题,虽然不影响最后的结果,
但我还是想说,你仔细观察第一段代码中的X 和 第二段代码中的K 其实他们的值永远也到不了“0”,
你看看对不对,比如现在执行到return k * Factorial(k-1);语句,假设此时K=2, 执行K-1后新的K=1,
调用Factorial(K)函数,就进入IF判断环节,当判断为1后,返回值,IF语句就完全退出了,不再循环了。
也就不存在再次调用Factorial(K)函数,所以IF语句中对K=0的判断是多余的,去掉后运行结果没有改变。
最后,很感谢让我学到了一种新的循环方式!祝进步 |