递归代码的运行时错误

Runtime Error on Recursive Code

为什么这个 c++ 代码会产生 Runtime Error

有人可以帮助我吗?

https://ideone.com/trZwFD

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;
}