下面的代碼允許用戶輸入值,然后取所有給定值的總和,然后通過遞回給出總和。下面的代碼允許用戶輸入每個 int 并提供 sum
import java.util.Scanner;
public class Recursion {
public static int Recursion1(int userSum)
{
if (userSum == 0) {
return userSum;
} else {
return userSum Recursion1(userSum - 1);
}
}
public static void main(String[] args)
{
int userSum = 0;
Scanner scan = new Scanner(System.in);
System.out.println("Program Started");
System.out.println(Recursion1(userSum));
int counter = 0;
int i;
for(i=0;i < 5;i ) {
//ask user input
System.out.print("Enter any number: ");
userSum = scan.nextInt();
}
scan.close();
int sumNum=Recursion1(userSum);
System.out.println("The sum of digits is: " sumNum);
System.out.println("Scanner Closed.");
}
}
uj5u.com熱心網友回復:
對于初學者,您的代碼有幾個問題:
for(i=0;i < 5;i ) {
//ask user input
System.out.print("Enter any number: ");
userSum = scan.nextInt();
}
在上面的代碼中,您沒有存盤用戶插入的 5 個數字,您只存盤了最后一個,因為您不斷覆寫變數userSum。
要存盤多個值,最好的想法是陣列或串列。
您的代碼的第二個問題是您的遞回方法:
public static int Recursion1(int userSum)
{
if (userSum == 0) {
return userSum;
} else {
return userSum Recursion1(userSum - 1);
}
}
當你用intx呼叫這個方法時,它會給你從 x 到 0 的所有數字的總和。
所以如果你用輸入 3 呼叫它,它會給你 3 2 1 0 = 6
您想要的是使用遞回函式對用戶輸入的所有數字求和。
實作這一點的一種方法如下:
import java.util.Scanner;
import java.util.List;
import java.util.ArrayList;
public class Main {
public static int sumByRecursion(List<Integer> inputList) {
if (inputList.size() == 1) {
return inputList.get(0);
}
else {
return inputList.get(0) sumByRecursion(inputList.subList(1,inputList.size()));
}
}
public static void main(String[] args)
{
List<Integer> inputList = new ArrayList<>();
Scanner scan = new Scanner(System.in);
System.out.println("Program Started");
for(int i=0; i < 5; i ) {
//ask user input
System.out.print("Enter any number: ");
inputList.add(scan.nextInt());
}
scan.close();
int sumNum = sumByRecursion(inputList);
System.out.println("The sum of digits is: " sumNum);
}
}
uj5u.com熱心網友回復:
這應該作為遞回函式作業。如果您需要任何說明,請告訴我。
class MyClass {
private final Scanner scan = new Scanner(System.in);
public int sum(int count){
System.out.print("Enter any number: ");
int userSum = scan.nextInt();
if(count == 4) {
scan.close();
return userSum;
}
count ;
return userSum sum(count);
}
public static void main(String[] args)
{
MyClass r = new MyClass();
int sumNum = r.sum(0);
System.out.println("The sum of digits is: " sumNum);
System.out.println("Scanner Closed.");
}
}
uj5u.com熱心網友回復:
這是你想要的嗎?
for(i=0;i < 5;i ) {
//ask user input
System.out.print("Enter any number: ");
userSum = scan.nextInt();
}
System.out.println("The sum of digits is: " userSum);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/384992.html
