首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >这个递归函数是如何得到这个输出的?

这个递归函数是如何得到这个输出的?
EN

Stack Overflow用户
提问于 2016-01-11 15:59:46
回答 6查看 108关注 0票数 1

当我为n=5运行这段代码时,我得到的输出是"5 3 1 1 3 5“,我得到了5 3 1部分,但在那之后,n=-1,但是当我使用调试器运行代码时,当n=-1时,它会转到numbers(n-2);i.e System.out.prt(n+ "");之后的行,即使该语句包含在if块中。

这一切为什么要发生?

代码语言:javascript
运行
复制
public void numbers(int n)
{
    if(n>0)
    {
        System.out.print(n+" ");
        numbers(n-2);
        System.out.print(n+" ");
    }
}

TLDR :当n=-1 System.out.prt(n+ "");时,即使它在if块中,它只在n>0时运行。

任何帮助都将不胜感激。提前感谢!

EN

Stack Overflow用户

发布于 2016-01-11 16:06:05

代码语言:javascript
运行
复制
    5 first system.out then number(5-2)
    |
    ----> 3  first system.out then number(5-2)
          |
           ----->1 first system.out then number(5-2)
                 (smaller than 0) , returning
                 |
                 1 second system.out
                 |
           3<----  second system.out
           |
5<---------  second system.out
票数 0
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34725881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档