java - Matlab 与 Java 中的递归

标签 java matlab recursion

我在 Java 中破解了一个递归函数来解决我的 Stats 类中的作业问题,它看起来像这样:

public static int d (int k, int n) {
 if (n == 1) return 1;
 else if (n > k) return 0;
 else return n*d(k-1, n) + n*d(k-1,n-1);
}

然后我将 (20, 8) 代入该函数,得到 998,925,952。然而,我的教授说这个答案是错误的,在反复思考我的代码后,我决定在 Matlab 中尝试同样的事情:

function t = d(k,n)
  t = 0;
  if n == 1
    t = 1;
  elseif n > k
    t = 0;
  else
    t = n*d(k-1, n) + n*d(k-1, n-1);
  end

显然,此函数通过上述输入为我提供了正确答案,6.1169 * 10^17。

这一直困扰着我一整天,我完全不知道为什么用两种不同语言编写的两个看似相同的程序会给我完全不同的结果。谁能帮忙解释一下?

最佳答案

您的 Matlab 例程可能处理浮点输入,因此它将以浮点计算。

您的 Java 例程具有整数类型; 6.1169e17 超出支持范围,因此溢出。尝试将类型更改为 floatdouble

关于java - Matlab 与 Java 中的递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7409784/

相关文章:

Java To iOS 客户端流读取垃圾字符

perl - 改进我的 Perl 算法以合并 postscript show 命令

matlab - 如何找到 3D MATLAB 矩阵中最大元素的位置?

algorithm - 为什么中位数算法被描述为使用 O(1) 辅助空间?

c - 如何在不使用循环的情况下编写排序函数?

python - 在 Python 中递归求解数学方程

java - 如果天数包含另一年的天数,如何获得剩余天数?

java - Hibernate 类的模拟对象

java - 了解 MapReduce 性能?

matlab - 使用 Matlab 进行图割