我正在尝试创建一个递归函数,该函数返回数字中数字的平均值。例如,数字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);
}
但是,在不使用现有功能的情况下,我无法弄清楚如何计算平均值。
答案 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]);
}
}
答案 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;
那应该给你一个。平均值,无论数量是实数还是实数。