[英]Find Sum of Digits Using Recursion
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。我一步一步地在紙上完成了這個程序,從邏輯上講,我想不出我錯過的任何東西。
兩件事:
改變
recursion(remain, sum);
到
sum = recursion(remain, sum);
sum
,這是迄今為止數字的總和,並僅返回您處理的最后一位數字。改變
return y;
到
return sum + y;
這是您可以編寫的代碼來解決您的問題:
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;
}
}
變化:
請嘗試我提供的代碼,我希望它能解決您的問題。
我用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);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.