我刚写了这段代码:
#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);
}
但是我遇到了运行时错误,我认为我的问题出在我的变量中,我做了调试,但是我找不到答案,为什么我的运行时错误?
答案 0 :(得分:2)
由于您的变量是未签名的,当它们已经1
时从它们中删除0
会使它们翻转到最大值。
当n
到达0
然后您调用choose(n-1,k)
时,这就会发生,而这就是问题的根源(stackoverflow)。