gpt4 book ai didi

java - 解释这个递归算法打印所有数字的有序数

转载 作者:行者123 更新时间:2023-11-30 06:28:12 24 4
gpt4 key购买 nike

我有这段代码可以打印所有“有序”的数字,给定位数

(如果数字是xyz,那么它是有序的,当且仅当x

代码有效,但我无法理解 for 循环中使用的逻辑。这是递归,但如果有人能解释更多,那就太好了。

class OrderedNumbers{

public static void main(String args[]){
printOrdered(0,0,3); // 3 digit numbers
}

private static void printOrdered(int number, int prev, int n) {

if(n==0){
System.out.println(number);
return;
}

for(int i=(prev+1); i<(11-n); i++){
printOrdered(number*10 + i, i, n-1) ;
}

}

}

最佳答案

查看参数。

  • number是到目前为止组成的数字。在添加最后一位数字之前,我们将其乘以 10,以便在该数字上再追加一位数字。
  • prev是前一位的值。 for循环将在那之后开始,从而确保数字中的数字是有序的。
  • n是尚未追加的位数。当它达到零时,就达到了最大递归深度并打印了数字。我们还使用 n在上限的计算中for环形。最后一位数不得大于 9,倒数第二位不得大于 8,依此类推。您可以从 n=1 的事实中看出这一点条件显示为 i<10 ,即 i<=9 .

递归调用将传递前一个数字并附加一位数字,该数字的值确保后面的数字更大,并且剩余数字的数量减少一位。

关于java - 解释这个递归算法打印所有数字的有序数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12866550/

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