首页 文章

递归函数,用于重新计算数字中数字的平均值

提问于
浏览
0

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

  • 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

  • 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)

  • 0
    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);
    
  • 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;
    

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

相关问题