为什么这个c ++代码产生Runtime Error
?
int test(int a, int b)
{
int temp=1;
if (temp % b ==0 and temp % a ==0)
return temp;
temp++;
test(a,b);
return temp;
}
感谢所有人。
答案 0 :(得分:1)
每次递归调用都会将temp
初始化为1,因此您永远不会从方法返回(假设(1 % b ==0 and 1 % a ==0)
对于给定的a和b)为假,并且总是进行另一次递归调用。
答案 1 :(得分:0)
#include<iostream>
#include<iomanip>
using namespace std;
int temp=1;
int test(int a, int b)
{
if (temp % b ==0 && temp % a ==0)
return temp;
temp++;
test(a,b);
}
int main(){
cout<<test(2,3);
}
此代码效果很好
答案 2 :(得分:0)
我认为你应该放弃递归 - 你想要做的只是不要证明它。
int test(int a, int b)
{
int temp = 1;
while (temp % b == 0 && temp % a == 0)
++temp;
return temp;
}