[英]Finding minimum using recursion
好的,所以我需要繼續獲取用戶輸入,直到它們輸入0.我需要將它們存儲在一個數組中並打印出最小值。 但它繼續給我最后輸入的數字而不是排序並獲得列表中的最小值。 這是我到目前為止所做的。
import java.io.*;
import java.util.*;
public class FindingMin
{
public static void main(String[] args) throws IOException
{
int[] Numbers = new int[100];
int minimum = 0;
int InputParser;
String input= "1";
try
{
InputStreamReader stream = new InputStreamReader (System.in);
BufferedReader scan = new BufferedReader(stream);
InputParser = Integer.parseInt(input);
while(InputParser != 0)
{
input = scan.readLine();
InputParser = Integer.parseInt(input);
for(int i = 0;i<Numbers.length;i++)
{
if(InputParser == 0)
{
InputParser = 0;
}
else
Numbers[i] = InputParser;
}
}
minimum = findingMin(Numbers,Numbers[0],Numbers.length-1);
System.out.println("The minimum number is "+minimum);
}
catch(NumberFormatException exception)
{
System.out.println("Please enter integers only");
}
}
public static int findingMin(int[] list, int start, int end)
{
if (start == end)
return list[start];
else
{
int Min = findingMin(list, start, end-1);
if (Min < list[end])
return list[end];
else
return Min;
}
}
}
任何建議將不勝感激!
那是因為你有一個額外的循環:
while(InputParser != 0)
{
input = scan.readLine();
InputParser = Integer.parseInt(input);
for(int i = 0;i<Numbers.length;i++)
{
if(InputParser == 0)
{
InputParser = 0;
}
else
Numbers[i] = InputParser; // <-- you set all numbers
// to the last input here
}
}
正確的版本是:
int i = 0;
while(InputParser != 0)
{
input = scan.readLine();
InputParser = Integer.parseInt(input);
if(InputParser == 0)
{
InputParser = 0;
}
else
{
Numbers[i] = InputParser;
i++;
}
}
此外,調用方法應該是:
minimum = findingMin(Numbers,0,Numbers.length-1);
不
minimum = findingMin(Numbers,Numbers[0],Numbers.length-1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.