用道归法求数组的最大值。函数接口走义int amaxint alint n;其中a和n 都是用户传入的参数。函数用递法求数组a的最大值。#include «stdiohoint amaxint aflint nint main0int a10imax;forfi=01101++scanfd&ail;max=amaxa 10;printfmax=dnmax;
这里提供两种不同的递归实现:
方法一:分治法
int amax(int a[], int l, int n) { if (n == 1) return a[l]; // 只有一个元素,直接返回 int mid = l + n / 2; int left_max = amax(a, l, mid); // 递归求左半部分最大值 int right_max = amax(a, mid, n - mid); // 递归求右半部分最大值 return left_max > right_max ? left_max : right_max; // 取左右部分的最大值 }
方法二:线性递归
int amax(int a[], int l, int n) { if (n == 1) return a[l]; // 只有一个元素,直接返回 int max = amax(a, l, n - 1); // 递归求前n-1个元素的最大值 return max > a[l + n - 1] ? max : a[l + n - 1]; // 取前n-1个元素的最大值和第n个元素的较大值
原文地址: https://www.cveoy.top/t/topic/fp1u 著作权归作者所有。请勿转载和采集!