Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Fibonacci'的堆栈溢出;s递归调用_Java_Stack_Fibonacci - Fatal编程技术网

Java Fibonacci'的堆栈溢出;s递归调用

Java Fibonacci'的堆栈溢出;s递归调用,java,stack,fibonacci,Java,Stack,Fibonacci,Java堆栈到底是如何设置的 对于大学,我将确定通过递归方法计算并可由堆栈处理的最大可能值 有趣的是:测试表明,它与-Xmx和-Xms的大小无关。我能跑到Fib(4438)。但结果并不一致。有时降到4436 堆栈是否有公式 任何通过-xss4096m增加堆栈的操作都没有什么区别。-Xmx和-Xms设置可供JVM堆访问的内存,您需要增加堆栈的大小,您可以借助-Xss选项来完成此操作。-Xmx和-Xms设置可供JVM堆访问的内存,您需要增加堆栈的大小,可以通过-Xss选项来实现。,第771页: /

Java堆栈到底是如何设置的

对于大学,我将确定通过递归方法计算并可由堆栈处理的最大可能值

有趣的是:测试表明,它与
-Xmx
-Xms
的大小无关。我能跑到Fib(4438)。但结果并不一致。有时降到4436

堆栈是否有公式


任何通过
-xss4096m
增加堆栈的操作都没有什么区别。

-Xmx和-Xms设置可供JVM堆访问的内存,您需要增加堆栈的大小,您可以借助-Xss选项来完成此操作。

-Xmx和-Xms设置可供JVM堆访问的内存,您需要增加堆栈的大小,可以通过-Xss选项来实现。

,第771页:

 // Fig. 18.5: FibonacciCalculator.java
 // Recursive Fibonacci method.
 import java.math.BigInteger;
 public class FibonacciCalculator
 {
     private static BigInteger TWO = BigInteger.valueOf( 2 );


     // Recursive declaration of method fibonacci
     public static BigInteger fibonacci( BigInteger number )
     {
         if ( number.equals( BigInteger.ZERO ) ||
              number.equals( BigInteger.ONE ) ) // Base cases
             return number;
         else // Recursion step
             return fibonacci( number.subtract( BigInteger.ONE ) ).add(
         fibonacci( number.subtract( TWO ) ) );
     } // end method fibonacci


     // Displays the Fibonacci values from 0-40
     public static void main( String[] args )
     {
         for ( int counter = 0; counter <= 40; counter++ )
             System.out.printf( "Fibonacci of %d is: %d\n", counter,
         fibonacci( BigInteger.valueOf(counter)));
     } // End main()

 } // end class FibonacciCalculator
//图18.5:FibonacciCalculator.java
//递归斐波那契方法。
导入java.math.biginger;
公共类斐波那契计算器
{
私有静态BigInteger 2=BigInteger.valueOf(2);
//斐波那契方法的递归声明
公共静态BigInteger fibonacci(BigInteger数字)
{
if(number.equals(biginger.ZERO)||
number.equals(biginger.ONE))//基本情况
返回号码;
else//递归步骤
返回fibonacci(number.subtract(biginger.ONE)).add(
斐波那契(数字减去(二));
}//结束方法斐波那契
//显示0-40之间的斐波那契值
公共静态void main(字符串[]args)
{
对于(整数计数器=0;计数器,第771页:

 // Fig. 18.5: FibonacciCalculator.java
 // Recursive Fibonacci method.
 import java.math.BigInteger;
 public class FibonacciCalculator
 {
     private static BigInteger TWO = BigInteger.valueOf( 2 );


     // Recursive declaration of method fibonacci
     public static BigInteger fibonacci( BigInteger number )
     {
         if ( number.equals( BigInteger.ZERO ) ||
              number.equals( BigInteger.ONE ) ) // Base cases
             return number;
         else // Recursion step
             return fibonacci( number.subtract( BigInteger.ONE ) ).add(
         fibonacci( number.subtract( TWO ) ) );
     } // end method fibonacci


     // Displays the Fibonacci values from 0-40
     public static void main( String[] args )
     {
         for ( int counter = 0; counter <= 40; counter++ )
             System.out.printf( "Fibonacci of %d is: %d\n", counter,
         fibonacci( BigInteger.valueOf(counter)));
     } // End main()

 } // end class FibonacciCalculator
//图18.5:FibonacciCalculator.java
//递归斐波那契方法。
导入java.math.biginger;
公共类斐波那契计算器
{
私有静态BigInteger 2=BigInteger.valueOf(2);
//斐波那契方法的递归声明
公共静态BigInteger fibonacci(BigInteger数字)
{
if(number.equals(biginger.ZERO)||
number.equals(biginger.ONE))//基本情况
返回号码;
else//递归步骤
返回fibonacci(number.subtract(biginger.ONE)).add(
斐波那契(数字减去(二));
}//结束方法斐波那契
//显示0-40之间的斐波那契值
公共静态void main(字符串[]args)
{

对于(int counter=0;counter您误解了赋值。堆栈大小无关紧要。问题是指数型的。您不可能使用简单的递归程序获得Fib(4438)。使用以下代码,如果您成功获得Fib(50),您将非常幸运:


您误解了分配。堆栈大小无关紧要。问题是指数型的。而且您不可能使用简单的递归程序获得Fib(4438)。使用以下代码,如果您成功获得Fib(50),您将非常幸运:


堆栈大小的增加是通过-Xss命令完成的,例如,对于1MB堆栈大小:-xss1m您的主机可能在任何特定点的内存中运行更多或更少的程序。您不应该期望程序的可用内存总是恒定的。@Tejs:实际上您会怀疑您的堆栈大小是恒定的,如果与其他程序的内存需求相比,分页被用来为每个程序创建一种错觉,即它拥有所需的内存。到目前为止,我可以理解OP的疑虑。堆栈大小的增加是通过-Xss命令完成的,就像这样,对于1MB的堆栈大小:-Xss1mYour主机可以在任何sp的内存中运行更多或更少的程序具体点。你不应该期望你的程序的可用内存总是恒定的。@Tejs:实际上,你可能会怀疑你的堆栈大小是恒定的,如果这干扰了其他程序的内存需求,那么分页被用来为每个程序制造一种错觉,认为它有足够的内存可以理解OP的疑问。嗯,如果你不提供这个参数,堆栈大小是如何确定的?它有预设的默认值。这取决于操作系统、JVM版本和JVM创建者(Oracle、IBM等)它的大小从256MB到2048MB不等,因此如果不提供此参数,堆栈大小是如何确定的?它具有预设的默认值。具体取决于操作系统、JVM版本和JVM创建者(Oracle、IBM等)它的大小从256MB到2048MB不等。这并没有回答OP的问题,即递归可以达到多深。这只是一个参考,本章是OP问题的全部答案。这只是代码。这并没有回答OP的问题,即递归可以达到多深。这只是一个参考,本章是所有的answe代表OP的问题,这只是代码。