思考题:

如何用递归求出数组中的最大项

解:

我们很简单的把一个拥有n个数字的int类型的数组看成两个部分,

前n-1项和第n项

在进行比较大小的时候,就直接拿前n-1项和第n项进行比较:

如果第n项比较大,就return出第n项

如果前n-1项比第n项要大,就用递归的方法return出前n-1项的最大值

当然这一切都建立在传入当前函数的数字大于1的情况下,当传入的数字为1是,这个数字就为最大值

上面的那一句话就作为递归的出口使用

int MaxNumber(int number[],int n)
{
    if(n>=1)
    {
        if(MaxNumber(number, n-1)>number[n])
             return MaxNumber(number, n-1);
         else
             return number[n];
    }
    else
        return number[0];

}
int main(){
    int a[9]={9,8,7,6,5,4,3,21,2};
    int number=MaxNumber(a, 8);
    printf("%d\t",number);
}

 

版权声明:本文为oldfish123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/oldfish123/p/12945189.html