对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.我在纸上逐步完成了这个程序,从逻辑上讲,我无法想到我错过的任何内容。
答案 0 :(得分:1)
两件事:
更改
recursion(remain, sum);
到
sum = recursion(remain, sum);
sum
,这是到目前为止的数字之和,并且只返回您处理的最后一位数字。更改
return y;
到
return sum + y;
答案 1 :(得分:1)
以下是您可以编写的代码,可以解决您的问题:
ID FI SERIAL sortorder
1 5 3 id,fi,serial
4 2 2 id,fi,serial
3 2 7 id,fi,serial
变更:
请尝试我提供的代码,我希望它能解决您的问题。
答案 2 :(得分:1)
我用 C 写了一个程序:
#include <stdio.h>
int power(int x, int y) //calculates x^y.
{
int product = 1;
for (int i = 0; i < y; i++)
{
product = product * x;
}
return (product);
}
int num_digits(int x) //returns number of digit.
{
int z;
int i;
for (i = 0;; i++)
{
z = x / power(10, i);
if (z == 0)
break;
}
return (i);
}
int first_digit(int x) //returns first digit.
{
int a = num_digits(x);
int b = power(10, a - 1);
int c = x / b;
return (c);
}
void del_first_digit(int *x) //deletes the first digit of number and restores
//it at
//original address.
{
int a = *x;
int b = first_digit(a);
int c = num_digits(a);
*x = (*x) - b * power(10, c - 1);
}
void main() //main()
{
int user_input;
printf("give the input::");
scanf("%d", &user_input);
int digits = num_digits(user_input);
int dump = 0;
for (int i = 1; i <= digits; i++)
{
dump = dump + first_digit(user_input);
del_first_digit(&user_input);
}
printf("SUM OF DIGITS OF THIS %d DIGIT NUMBER IS %d.",digits,dump);
}