为什么递归这样做?

西格玛
class Java_code {
public static void main(String args[]){

    mymethod(5);
}
static void  mymethod(int counter){
    if(counter==0){
    System.out.println("");
    }
    else {
    System.out.println("Hello" + counter);
    mymethod(--counter);
    System.out.println("" +counter);
    }
}
}

假设我们有上面的程序,当我给出参数5时,它会打印

Hello5

Hello4

Hello3

Hello2

Hello1

之后,它打印

0

1个

2个

3

4

但是,为什么要打印数字,它是怎么发生的呢?我不知道那是怎么回事,您能帮我这个忙吗?

哈桑

请记住,只要counter!= 0,就会执行这三行

System.out.println(“ H​​ello” +计数器);

mymethod(-counter);

System.out.println(“” + counter);

最初使用counter = 5调用mymethod()。因此,它输出“ Hello5”,并在返回之前以counter = 4递归调用自身,因此输出“ Hello4”,并在返回之前,以counter = 5递归调用自身。 3所以打印“ Hello3”,在它返回之前,它以counter = 2递归调用自己,所以打印“ Hello2”,并且在它返回之前,它以counter = 1递归地调用自己,所以打印“ Hello1”,然后在它返回之前,它以counter = 0递归地调用自身,此时它不打印任何内容,但返回到调用方,该调用方将在每个正在进行的先前执行中执行其余代码System.out.println(“” + counter),以其方式回到初始调用者函数,它将分别打印值0、1、2、3、4。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

尾递归优化:为什么'+'不允许这样做?

来自分类Dev

为什么这样做?

来自分类Dev

为什么ArrayList这样做?

来自分类Dev

JavaScript为什么要这样做?

来自分类Dev

为什么python列表会这样做?

来自分类Dev

为什么这样做?[C ++; 无效指针]

来自分类Dev

为什么TypeScript允许这样做?

来自分类Dev

熊猫为什么要这样做?

来自分类Dev

目标文件“做什么”,为什么要这样做?

来自分类Dev

如果-1是标准EOF字节,为什么DataInputStream这样做?

来自分类Dev

为什么这样做?(多重继承,切片)

来自分类Dev

为什么这样做而不是jQuery插件中的$(this)

来自分类Dev

为什么这样做?C中的字符指针

来自分类Dev

斯威夫特为什么这样做?需要AnyObject vs Any

来自分类Dev

Switch中的静态最终整数:为什么不能这样做?

来自分类Dev

绑定到TreeViewItem.IsExpanded。为什么这样做?

来自分类Dev

C函数声明语法-为什么这样做?

来自分类Dev

为什么这样做?没有实例从IL执行方法

来自分类Dev

函数指针-为什么,当我不能这样做时?

来自分类Dev

为什么clone()不允许这样做?

来自分类Dev

Ruby:为什么这样做会起作用?

来自分类Dev

为什么编译器允许这样做?

来自分类Dev

为什么这样做?C中的字符指针

来自分类Dev

整数的整数平方根,为什么这样做?

来自分类Dev

为什么在使用constexpr时允许这样做?

来自分类Dev

Switch中的静态最终整数:为什么不能这样做?

来自分类Dev

为什么这样做?(多重继承,切片)

来自分类Dev

为什么base64编码的java代码这样做

来自分类Dev

他们为什么在Scala中这样做?

Related 相关文章

热门标签

归档