为什么我的递归双函数返回 -nan(ind) 而不是 x?

问题描述 投票:0回答:1

我是 C++ 编程的初学者。我在 sqrt 中没有发现除以零和负数。为什么 approx_root() 返回 -nan(ind) 而不是 x?请帮助我!

#include <iostream>
#include <cmath>

using namespace std;

double approx_root(double x) {
    double x_prev = x;
    x = ((2 - pow(x_prev, 3)) / 5);
    cout << x_prev << " " << x << endl;

    if (abs(x - x_prev) <= pow(10, -5)) {
        //cout << abs(x - x_prev) << " " << pow(10, -5) << endl;
        return x;
    }

    approx_root(x);
}

int main()
{
    double x=1;
    
    cout << approx_root(x) << endl;
    return 0;
}

enter image description here

我正在等待我的函数返回 x。我不明白我能做什么。

c++ function recursion nan
1个回答
0
投票

您似乎正在尝试使用递归函数找到根的近似值。您的代码中有几个问题。

首先,在approx_root函数中,对approx_root(x)的递归调用缺少return语句。其次,在主函数中,您尝试直接输出 approx_root(x) 的结果,而没有正确考虑其返回值。纠正此错误可能会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.