gpt4 book ai didi

java - 没有错误!找不到java.lang.StackOverflowError的解决方案

转载 作者:行者123 更新时间:2023-12-01 21:41:19 28 4
gpt4 key购买 nike

import java.util.*;

public class NRootx {

public static Double NRmethod (Double num, int root, Double guess){
guess= num/(root+1); //first guess

Double guess_output=1.0;

for (int i=1;i<=root; i++)
{
guess_output *= guess;
}

Double error= guess_output-num;
error = error * 0.001;
guess = guess - error;

if (Math.abs(error)>=0.000001)
return NRmethod(num, root, guess); //Recursion
else
return guess;

//I can't find out the problem now. Java.lang.StackOverFlow error is showing.

}
}
}

// Main function
public static void main(String[] args) {

Double x;
int n;
Scanner sc= new Scanner (System.in);
System.out.println("Enter the value of x: ");
x=sc.nextDouble();
System.out.println("Enter the value of n: ");
n=sc.nextInt();
Double guess=x/(n+1);
Double ans= NRmethod(x,n,guess);
System.out.println("The value of y is ="+ans);
}

请有人帮我解决这个问题。我厌倦了这样做很多次。

最佳答案

您永远不会更改rootnum,并且在每次调用guess= num/(root+1)时重置guess );,所以你会得到无休止的递归,导致 StackOverflowError

我不确定正确的逻辑应该是什么,但为了防止无限递归,您必须将不同的 root 值或 num 值传递给每个递归调用,或者不要在方法开始时重置 guess

关于java - 没有错误!找不到java.lang.StackOverflowError的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36396325/

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