递归算法中的奇怪行为,

红人

作为编程101课程的一部分,我正在编写一个递归算法来计算Java中的斐波那契数。这是代码:

public class Fib {

    public static void main(String[] args) {
        Fib fib = new Fib();
    }

    public Fib() {
        int end = 9;
        long[] nums = new long[2];
        printFib(0, end, nums);
    }

    private void printFib(int i, int end, long[] nums) {
        while(i < end) {
            if(i == 0 || i == 1) {
                nums[i] = 1;
                System.out.println("1");
            } else {
                long fib;
                fib = 0;
                fib += (nums[0] + nums[1]);
                nums[0] = nums[1];
                nums[1] = fib;
                System.out.println(fib);    
            }
            i++;
            printFib(i, end, nums);
        }
    }
}

当我逐步执行程序时,它一直按预期运行,直到i等于为止end,该变量告诉printFib方法应打印多少斐波那契数。ìequal等于end while(i < 1)按预期返回false并且程序转到最后一个时},现在您希望程序返回我最初调用该函数的构造函数,并且该程序应该退出,但事实并非如此。程序返回while语句,并以某种方式再次返回false。然后它再次执行相同的操作,只是第二次它减少i1(什么?!),然后else在到达if语句时继续执行该子句。然后,它一遍又一遍地重复做同样的事情i 在1到2之间。我已经问过我的老师这个问题,他无法解释。

如果我将程序替换为while该程序将完全按照我的预期工作if所以也许while我不了解某些内容

编辑因此,我现在意识到,每次调用i该方法时,都会存储一个不同的值,并且当该方法退出并i=时end,程序将返回到以前的调用中,而我具有一个不同的值。

他们是

您实现了一个迭代算法来计算斐波那契数列。这就是while循环的作用。最后,进行递归调用没有意义printFib(i, end, nums)

如果您打算递归实现,则不需要整个while循环。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

递归函数中的奇怪/奇怪行为

来自分类Dev

Dijkstra的算法在python中的奇怪行为

来自分类Dev

JavaScript堆算法中for循环的奇怪行为

来自分类Dev

递归函数在PHP中的行为很奇怪

来自分类Dev

贪婪算法的奇怪行为

来自分类Dev

递归函数的奇怪行为

来自分类Dev

奇怪的PowerShell递归行为

来自分类Dev

递归函数的奇怪行为

来自分类Dev

Swift(Beta 7)中递归枚举的奇怪行为

来自分类Dev

Javascript,奇怪的递归行为,DFS

来自分类Dev

Python泛洪算法的奇怪行为

来自分类Dev

背包算法,奇怪的行为(python3)

来自分类Dev

GHCi中的奇怪行为

来自分类Dev

PHP中的奇怪行为

来自分类Dev

NSViewController中的奇怪行为

来自分类Dev

PHP中的奇怪行为

来自分类Dev

$ scope中的奇怪行为。

来自分类Dev

Laravel 中的奇怪行为

来自分类Dev

我在 python 中的像素颜色更改算法有一个奇怪的行为

来自分类Dev

XML在Java中具有奇怪行为的树结构的递归打印

来自分类Dev

从递归算法中获取元素

来自分类Dev

递归算法中的分割错误

来自分类Dev

python中的奇怪线程行为

来自分类Dev

MATLAB中奇怪的rand()行为

来自分类Dev

“ body”标签中“ this”的奇怪行为

来自分类Dev

Chrome中的奇怪日期行为

来自分类Dev

JavaScript中奇怪的函数行为

来自分类Dev

PHP中奇怪的关闭行为

来自分类Dev

jQuery中的奇怪加法行为