[英]Recursive function to return the average of the digits in a number
我正在嘗試創建一個遞歸函數,以返回數字中數字的平均值。 例如,數字123的平均值為2。我知道如何編寫一個對數字求和的函數。
public static int sum (int n) {
if (n<10)
return n;
return n%10 + sum(n/10);
}
我也知道如何計算數字
public static int numCount(int n) {
if (n<10)
return 1;
return 1 + numCount(n/10);
}
但是,我不知道如何在不使用現有功能的情況下計算平均值。
您可以遞歸地迭代數組,同時保留累加sum
和一個索引,該索引顯示已迭代的項目:
public class MyClass {
public static void main(String args[]) {
int[] arr = {1,2,3};
System.out.println(avg(arr)); // 2.0
}
private static double avg(int[] arr) {
return avg(arr, 0, 0);
}
private static double avg(int[] arr, int index, int sum) {
if (index == arr.length) {
return (double) sum / index;
}
return avg(arr, index + 1, sum + arr[index]);
}
}
嘗試這個:
int recursive(int num, int startingSize) {
if(num < 10){
return num;
}
num = num % 10 + recursive(num/10, startingSize++);
return num/startingSize;
}
例如: recursive(123, 1)
count=0;
public static int sum (int n) {
count++;
if (n<10)
return n;
return n%10 + sum(n/10);
}
double average = (double)sum(123)/count;
System.out.println("average:"+ average);
我的意思是,如果我們只是在談論數字,那么我們甚至不需要遞歸函數
String s = Double(10.45).toString();
Int size = s.length();
int count = 0;
Int sum = 0;
for (int i = 0; i < size; I++ ) {
try {
sum += Integer.valueOf(s[i]);
++count;
} catch (Exception e) {}
}
return sum / count;
那應該給你。 平均值,無論數量是實數還是實數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.