首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >递归中使用除法

递归中使用除法
EN

Stack Overflow用户
提问于 2015-08-06 17:32:41
回答 2查看 596关注 0票数 1

我有以下程序

代码语言:javascript
复制
public static int doSomething(int num){
    if(Math.abs(num) > 9){
        return (1 + doSomething( num / 10));
    }
    else{
        return 1;
    }
}
public static void main(String[] args){
    System.out.println(doSomething(333));
}

我就是这么理解的。如果号码是333。333 / 10给了我33。由于33 >9,它再次运行递归循环,给出了3。在3之后,它进入了其他条件。

我不明白为什么要打印3作为答案。

我对java还是新手,所以仍然在尝试理解基本知识。

我不相信这个问题是重复的。作为一个java初学者,我的问题要简单得多。另外,我认为问题是使用javascript而不是java。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-08-06 17:40:02

听着,如果是doSomething()Math.abs(num) < 9会返回什么?1?是的你是对的。好的,我们开始吧。

代码语言:javascript
复制
doSomething(333) => 1 + doSomething(33) // 33 not less than 9
                 => 1 + (1 + doSomething(3)) // now 3 is less than 9
                 => 1 + (1 + {1})
                 => 3
票数 5
EN

Stack Overflow用户

发布于 2015-08-06 17:39:18

递归不是在1 + 33上,而是仅在33上,所以它是:

代码语言:javascript
复制
doSomething(333)
= 1 + doSomething(33)
= 1 + 1 + doSomething(3)
= 1 + 1 + 1
= 3
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31862215

复制
相关文章

相似问题

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