递归代码的运行时错误

时间:2015-01-18 11:36:19

标签: c++ recursion

为什么这个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;
}

感谢所有人。

3 个答案:

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