在for循环中递归,迭代在基本情况改变时因因子而改变

时间:2016-06-20 15:25:27

标签: java loops recursion

我对Java很新。我正在学习递归,正在阅读这段代码,看看我是否可以追踪它。

在基本情况下,当我将k值从0更改为1时,迭代次数改变了9倍。

我试图用一些sysout跟踪它,但仍然不理解它。我确实理解这是for循环中的递归。我理解没有for循环的递归输出,但是一旦它重新加入,我无法追踪为什么它在基本情况等于0时会自己回忆。

鉴于k = 2的初始调用,当基本条件从1变为0时,为什么它会从9跳到81?

我花了好几个小时试图理解它。

代码如下:

public class recurforloop { 

    public static void printrecurforloop(int number,  int k) { 
//when I change the value of  k == 1, the iterations reduces from 81 to 9
        if (k == 0) { 
            System.out.println(number); 
        } 

        for (int i = ( 1); i < 10; i++) { 
            printrecurforloop(number * 10 + i, k - 1); 
        } 
    } 

    public static void main(String[] args) { 
        printrecurforloop(0, 2); 
    } 
 } 

1 个答案:

答案 0 :(得分:0)

它改变了9倍,因为每次调用printrecurforloop方法时,它都会在for循环中被调用9次,直到k = 0。