递归函数,返回一个数字的平均值

时间:2018-10-10 16:28:00

标签: java recursion

我正在尝试创建一个递归函数,该函数返回数字中数字的平均值。例如,数字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);
}

但是,在不使用现有功能的情况下,我无法弄清楚如何计算平均值。

4 个答案:

答案 0 :(得分:1)

您可以递归地迭代数组,同时保留累积的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]);
    }
}

Demo

答案 1 :(得分:0)

尝试一下:

int recursive(int num, int startingSize) {
    if(num < 10){
        return num;
    }
    num = num % 10 + recursive(num/10, startingSize++);

    return num/startingSize;

}

,例如:recursive(123, 1)

答案 2 :(得分:0)

@KafkaListener

答案 3 :(得分:0)

我的意思是,如果我们只是在谈论数字,我们甚至不需要在这里递归函数

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;

那应该给你一个。平均值,无论数量是实数还是实数。