gpt4 book ai didi

c++ - 帮助解决堆栈溢出问题!

转载 作者:搜寻专家 更新时间:2023-10-31 01:19:47 26 4
gpt4 key购买 nike

首先,我想说这是我第一次尝试为我的编程课做一个递归函数!无论如何,分配是使用递归(绝对没有迭代)找到任何正整数的根。我的代码正确计算了任何正数的平方根,但是当我尝试计算一个数的四次方根或三次方根时,出现堆栈溢出错误。我将发布我的代码,我们将不胜感激任何帮助。如果您觉得需要,请开火哈。

#include<iostream>
#include<iomanip>
#include<cstdlib>
using namespace std;

double squareRoot (int root, double number, double low, double high);

int main() {
int root = 0;
double number;
double low, high;
double guess = 0;
double error = 0;
cout.setf(ios::fixed);
cout.setf(ios::showpoint);

do
{
cout << "Find what root? (0 ends): ";
cin >> root;
if (root == 0)
{
exit(1);
}
else
{
cout << "Root of what value? ";
cin >> number;
}
low = number - (number - 1);
high = number;
cout << "root " << root << " of " << setprecision(4) << number << " is " << setprecision(10) << squareRoot (root, number, low, high) << endl;
}while (root != 0);

cin.get();
cin.get();
return 0;
}

double squareRoot (int root, double number, double low, double high)
{
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(10);
double guess = (high + low) / double(root);
double error = abs(number - (guess * guess));
if ((guess * guess) == number || error <= 0.000000000001)
{
return guess;
}
else if ((guess * guess) > number)
{
high = guess;
return squareRoot(root, number, low, high);
}
else
{
low = guess;
return squareRoot(root, number, low, high);
}
}

最佳答案

你会得到一个堆栈溢出,因为你在无限递归;你永远找不到答案。

拿笔和纸,通过一个输入(比如 3 代表根,8 代表值)来完成你的递归......弄清楚为什么你的解决逻辑不起作用。

关于c++ - 帮助解决堆栈溢出问题!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5699151/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com