Я взломал рекурсивную функцию в 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.
Это беспокоило меня весь день, и я понятия не имею, почему две, казалось бы, идентичные программы на двух разных языках дали бы мне совершенно разные результаты.Кто-нибудь может помочь объяснить это?