java - 如何在java中以递归fn返回

标签 java

实际上我的目标是找到 super 否,例如我将得到2个值n,k,其中n = 148且k = 3,所以我必须形成p = 148148148,然后添加p的数字直到我得到一个否(ans = 3)这是我尝试过的......

import java.util.*;

public class RecurrsiveDigitSum {

     public int check(int n) {
         int s = 0;
         int d;

         while(n>0) {
             d = n%10;
             s = s+d;
             n = n/10;
             System.out.println(s);
        }

        if(s/10 !=0){
            check(s);
        }

        return s;
     }    

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Scanner scan = new Scanner(System.in);
        int n = scan.nextInt();
        int k = scan.nextInt();
        int sum;
        RecurrsiveDigitSum obj = new RecurrsiveDigitSum();
        sum =  obj.check(n);
        System.out.println(sum);
        sum = sum * k;
        System.out.println(sum);
        int s1 = obj.check(sum);
        System.out.println(s1);
    }
}

但这里的问题是,即使我的 s = 4 最终它也只是返回已找到的 s 的第一个值,所以请帮助我 friend 们

最佳答案

必须将 return 放在递归调用之前。

if(s/10 !=0){
    return check(s);
}

如果不写,调用函数的结果将是loss,并且返回s的结果而不是check(s)。

我稍微改进了你的解决方案。

public int check(int n) {
    int s = 0;

    while(n>0) {
        s += n%10;
        n /= 10;
    }

    if(s/10 != 0){
        return check(s);
    }

    return s;
 }

关于java - 如何在java中以递归fn返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52800080/

相关文章:

java - 在什么条件下调用 ELResolver 的 setValue 方法?

java - JUnit TeaDown() 在我的测试完成之前完成执行(使用自定义运行程序)

java - android 通过手指触摸屏幕删除线条

java - 使用 JFrame 在 Java 中加载图像

java - 当文本是字段时,如何为文本 "text"添加下划线?

java - 如何从 Spring Data JPA GROUP BY 查询中返回自定义对象

java - 通过 mvn tomcat7 :deploy 部署时 Maven webapp 不工作

java - 目标行 Javadoc

java - 如何从IDP端实现特定SP的全局注销?

java - 无法使用 JDBC 连接到 Sql Server 数据库