gpt4 book ai didi

Java递归向前和向后输出名称

转载 作者:行者123 更新时间:2023-11-29 04:32:31 24 4
gpt4 key购买 nike

很久以前我在类里面写了一个基本的递归问题,我试图记住我是如何获得打印输出的。

它基本上向前和向后打印出一个名字。我了解它如何向前打印名称,但我对它如何向后打印名称一无所知。我进行了调试以逐步查看发生了什么,但无法理解在名称向前打印后索引是如何减少的。

public class CharRecursion 
{

public static void printName(String name, int index)
{
if(index > name.length() - 1)
{
return;
}
else
{
System.out.println(name.charAt(index));
printName(name, index + 1);
System.out.println(name.charAt(index));
}
}
public static void main(String[] args)
{
printName("Brian", 0);
}

}

输出是BriannairB

最佳答案

向后的部分来自第二个System.out.println(name.charAt(index));语句。

只有在递归调用结束时才会调用这个,递归地,所以你最终得到反向字符串,看看后缀标记:

    System.out.println(name.charAt(index) + " - ");
printName(name, index + 1);
System.out.println(name.charAt(index) + " * ");

你得到:

B - 
r -
i -
a -
n -
n *
a *
i *
r *
B *

因为调用的实际顺序是:

printName(名字, 0) > printName(名字, 1) > printName(名字, 2) > printName(名字, 3) > printName(名字, 4)

解析第二个 println 语句的第一个调用是 printName(name, 4),然后是 printName(name, 3),等..打印顺序变为:

System.out.println(name.charAt(4) + " * ");
System.out.println(name.charAt(3) + " * ");
System.out.println(name.charAt(2) + " * ");
System.out.println(name.charAt(1) + " * ");
System.out.println(name.charAt(0) + " * ");

关于Java递归向前和向后输出名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43257553/

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