前言:
前几天发布第一部分,今天是第二部分,谢谢大家支持。
题目
(一)找出数组最大值问题:
引导:
在数组里找出最大值,我们将问题拆开来考虑
假设数组int a[] = { 15,2,20,12,10,8};如果我将这数组分成两部分,即a[5]和a[0-4],如果判断a[5]比max(a[0-4])还大,那a[5]就是最大的,反之在a[0-4]找出最大的还是按照上面的步骤分成两部分。这样将问题一步步分解的思路又是递归的思路,所以使用递归解决。
分析:
已知:显然,一个数组如果只有一项我们根本没有必要判断最大值,所以直接输出,写在 if 语句中
未知:我们通过比较a[5]和max(a[0-4])哪个大,这我们不知道所以写在else在这里a[5]和a[0-4]哪个大还有两种情况分开讨论,若果a[5]大输出a[5]反之找出a[0-4]最大值。
参数:我们要查找的数组,所以需要数组,并且我们是将数组一点一点拆分,所以需要一个变量代表数组的长度
代码:
#include<stdio.h>
int max(int a[], int n)//设一个max的方法传入数组a和数组最下标(或数组元素个数-1)
{
if (n