两个程序中的无限递归
Infinite recursion in two programs
我正在写两个程序。一个将一个数提升到另一个数的幂,另一个做最大公约数。它们都使用无限递归崩溃,我不知道为什么。有人能看看这些并给我建议吗?请不要发布完整的解决方案,只发布建议。
#include <iostream>
using namespace std;
int pow( int base, int exp ) {
int somevariable = pow(base,exp-1);
if (base == 0) {
return 1;
}
else {
return base * pow (base,exp-1);
}
}
int main ( ) {
int base;
int power;
cout << "This program calculates exponential values." << endl;
cout << "Enter the base: ";
cin >> base;
cout << "Enter the power: ";
cin >> power;
cout << "" << endl;
cout << base << "^" << power << " =" <<
cout << pow(base, power);
}
#include <iostream>
using namespace std;
int gcd(int number1, int number2) {
int returnj = 0;
if(number1 || number2 >= 0) {
return gcd(number2, number1 % number2);
}
else if(number1 || number2 == 0) {
return 1;
}
}
int main ( ) {
int number;
int another;
int gcdd;
cout << "This program calculates the greatest common divisor (GCD) for two integers." << endl;
cout << "Enter a number: ";
cin >> number;
cout << "Enter another: ";
cin >> another;
cout << "" << endl;
cout << "GCD = " << gcd(number, another);
}
在pow函数中,您需要更改
if (base == 0)
收件人:
if (exp == 0)
这样就不会是无休止的递归。
现在可以使用
#include <iostream>
using namespace std;
int pow( int base, int exp ) {
//There's was a line here creating a loop because it never arrives to a return
if (exp == 0) { // base 0 makes not sense because the base it's always the same, it's the exp that decreases
return 1;
}
else {
return base * pow (base,exp-1);
}
}
int main ( ) {
int base;
int power;
cout << "This program calculates exponential values." << endl;
cout << "Enter the base: ";
cin >> base;
cout << "Enter the power: ";
cin >> power;
cout << "" << endl;
cout << base << "^" << power << " = "; // This line was not closed.
cout << pow(base, power);
}
相关文章:
- 交换运算符 + 重载会导致无限递归
- 为什么当函数参数未定义为常量引用时存在无限递归?
- 为什么这是无限递归
- 尝试"复制"shared_ptr向上转换行为会导致复制构造函数上的无限递归(导致段错误)
- ConstexPR模板功能的无限递归
- 交换和移动无限递归
- 无限循环与无限递归.两者都未定义吗?
- 函数中的无限递归
- 运算符重载流提取运算符 (>>) C++会导致无限递归流提取
- C :Ostream无限递归
- 无限递归模板实例化使用clang时GCC工作正常
- 当我使用 boost 构建绝对路径时,无限递归
- 模板中的无限递归
- C++中的无限递归快速排序
- 尽管有停止条件,无限递归调用仍会执行,因为参数不会前进
- 在映射中插入地址时,新运算符重载会导致无限递归
- 可变参数模板实例化中的无限递归,试图构建任意深度的树状结构
- 调用原始版本的DLL挂钩函数时,我得到了无限递归
- std::swap 在 VS 2013 中导致无限递归
- 卡在无限递归中