递归代码上的运行时错误

Runtime Error on Recursive Code

本文关键字:运行时错误 代码 递归      更新时间:2023-10-16

为什么这个 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,因此您永远不会从该方法返回(假设给定的 a 和 b (1 % b ==0 and 1 % a ==0)为 false),并且始终进行另一个递归调用。

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