这是我的第一个递归问题,我不理解它,它也不起作用。有什么想法吗?
int C;
int myFactorial;
int n = Integer.parseInt(objectsChooseField.getText());
int r = Integer.parseInt(chooseFromField.getText());
if (C == 1){
return 1;
}
return (C*(myFactionial(n!/(r!(n-r)))));
//C(n,r) = n!/(r!(n-r));
}
答案 0 :(得分:0)
我认为你的意思可能是
int myFactorial(int C) {
int n = Integer.parseInt(objectsChooseField.getText());
int r = Integer.parseInt(chooseFromField.getText());
if (C == 1){
return 1;
}
return (C*(myFactorial(n!/(r!(n-r)))));
//C(n,r) = n!/(r!(n-r));
}
这是递归的 - myFactorial
方法调用自身。有效递归实现的关键是检查一些终止条件(在你的情况下为if (C == 1)
),这样你就不会得到“无限”的递归和一个讨厌的崩溃消息。
(但请注意,这个特定的实现不太可能,因为你正在进行整数运算,因为!/
不是Java中的有效运算符。)