递归代码的运行时错误
Runtime Error on Recursive Code
为什么这个 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;
}
感谢大家。
每个递归调用都将 temp
初始化为 1,因此您永远不会从该方法中 return(假设对于给定的 a 和 b,(1 % b ==0 and 1 % a ==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);
}
此代码运行良好
我认为你应该放弃递归——你想做的事情并不能证明它是正确的。
int test(int a, int b)
{
int temp = 1;
while (temp % b == 0 && temp % a == 0)
++temp;
return temp;
}
为什么这个 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;
}
感谢大家。
每个递归调用都将 temp
初始化为 1,因此您永远不会从该方法中 return(假设对于给定的 a 和 b,(1 % b ==0 and 1 % a ==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);
}
此代码运行良好
我认为你应该放弃递归——你想做的事情并不能证明它是正确的。
int test(int a, int b)
{
int temp = 1;
while (temp % b == 0 && temp % a == 0)
++temp;
return temp;
}