簡體   English   中英

遞歸函數,返回一個數字的平均值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM