C++ 如何实现N选择R?
我刚刚写了这段代码:C++ 如何实现N选择R?,c++,C++,我刚刚写了这段代码: #include <iostream> using namespace std; unsigned long long int choose(unsigned long long int k, unsigned long long int n) { if (k==n or k==0) { return 1; } else { return (choose(n-1,k-1)+choose(
#include <iostream>
using namespace std;
unsigned long long int choose(unsigned long long int k, unsigned long long int n)
{
if (k==n or k==0)
{
return 1;
}
else
{
return (choose(n-1,k-1)+choose(n-1,k));
}
}
int main(){
cout << choose(3, 6);
}
#包括
使用名称空间std;
无符号长整型选择(无符号长整型k,无符号长整型n)
{
如果(k==n或k==0)
{
返回1;
}
其他的
{
返回(选择(n-1,k-1)+选择(n-1,k));
}
}
int main(){
cout由于变量是无符号的,当它们已经0
时,从它们中减去1
将使它们滚动到最大值
当n
到达0
并调用choose(n-1,k)
时,就会发生这种情况,这就是问题的根源(堆栈溢出)。可能重复“choose”函数是二项式系数。@anthony arnold这个问题不象是个骗局。我不想复制别人的代码。好的,我不会再打扰你了。我怎样才能解决它?我想我必须插入一些IF@user3700182或n==0
?你的意思是::如果(k==n或k==0或n==0)??@user3700182您认为这有意义吗?@user3700182其他一些建议-除非这是您的编码惯例,否则请使用更惯用的|
而不是或。