用递归法求平均数的值


#include<stdio.h>
float avgint(int a[],int n)
{
 float mm,tt;
 if(n==1) tt=a[0];
 else
 {
  mm=avgint(a,n-1);
  tt=(mm*(n-1)+a[n-1])/n;//(前n-1项的和加最后一项)除以n
 }
 return tt;
}
void main()
{int a[]={5,6,7};
 printf("%.2f",avgint(a,3));
}
  • 8
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
首先,我们需要知道什么是集合的中位。对于一个包含 n 个元素的集合,如果 n 是奇,则中位是第 (n+1)/2 个元素;如果 n 是偶,则中位是第 n/2 个元素和第 (n/2)+1 个元素的平均。 现在我们可以开始写递归了。首先,我们需要定义一个函来找到集合中的最小元素和最大元素。然后,我们可以使用这些元素来缩小集合的范围,直到我们找到中位为止。 以下是用 Python 实现的递归: ```python def find_median(nums): n = len(nums) if n % 2 == 1: return find_kth(nums, n // 2) else: return (find_kth(nums, n // 2 - 1) + find_kth(nums, n // 2)) / 2 def find_kth(nums, k): if len(nums) == 1: return nums[0] pivot = nums[len(nums) // 2] left = [x for x in nums if x < pivot] middle = [x for x in nums if x == pivot] right = [x for x in nums if x > pivot] if k < len(left): return find_kth(left, k) elif k < len(left) + len(middle): return middle[0] else: return find_kth(right, k - len(left) - len(middle)) ``` 这个函首先检查集合中元素的量。如果集合包含奇个元素,则我们只需要找到第 (n+1)/2 个元素,这可以通过调用 find_kth(nums, n // 2) 函来实现。如果集合包含偶个元素,则我们需要找到第 n/2 个元素和第 (n/2)+1 个元素的平均,这可以通过调用 find_kth(nums, n // 2 - 1) 和 find_kth(nums, n // 2) 函来实现。 find_kth 函是一个递归,它使用分治法的思想来找到第 k 小的元素。首先,它选择集合中间的元素作为枢轴。然后,它将集合分成三部分:小于枢轴的元素、等于枢轴的元素和大于枢轴的元素。接下来,它根据 k 与左半部分、中间部分和右半部分的长度比较的结果,递归地在适当的部分中寻找第 k 小的元素。 这个递归的时间复杂度为 O(n),其中 n 是集合中元素的量。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值