首页 文章

使用递归查找数字总和

提问于
浏览
2

对Java很新,但我正在编写一个教程,我必须使用递归找到用户输入整数的数字和 . 到目前为止,这是我的代码:

公共课其他{

public static void main(String[] arg) {

     Scanner s=new Scanner(System.in);
     System.out.println("Enter any integer: ");
     int sum=0;
     int x=s.nextInt();
     int y=recursion(x, sum);
     System.out.println("The Sum of the digits is: "+ y);

 }   

public static int recursion(int y, int sum) {
  if(y/10>=1) {
      int tempvar =y%10;
      int remain=y/10;
      sum+=tempvar;
      if(remain!=0) {
          recursion(remain, sum); 
      }
      return sum;     
  }
  else {            
      return y;
  }

}

因此,如果我输入输入:123,则返回3.我在纸上逐步完成了这个程序,从逻辑上讲,我无法想到我错过的任何内容 .

2 回答

  • 1

    两件事情:

    • 你忽略了递归调用的结果 .

    更改

    recursion(remain, sum);
    

    sum = recursion(remain, sum);
    
    • 在您的基本情况下,忽略 sum ,这是到目前为止的数字之和,并返回您处理的最后一位数字 .

    更改

    return y;
    

    return sum + y;
    
  • 1

    以下是您可以编写的代码,可以解决您的问题:

    public static void main(String[] arg) {
    
         Scanner s=new Scanner(System.in);
         System.out.println("Enter any integer: ");
         int sum=0;
         int x=s.nextInt();
         int y=recursion(x);
         System.out.println("The Sum of the digits is: "+ y);
    
     }   
    
    public static int recursion(int y) {
      if(y/10>=1) {
          int tempvar =y%10;
          int remain=y/10;
          return tempvar + recursion(remain); 
      }
      else {            
          return y;
      }
    
    }
    

    变化 :

    • 您忽略了递归函数的返回值 .

    • 未正确应用终止条件 .

    • 无需在递归函数中传递当前结果 .

    请尝试我给出的代码,我希望它能解决您的问题 .

相关问题