栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c语言递归思想实践-整形数组求极值问题

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c语言递归思想实践-整形数组求极值问题

我们在使用递归解决问题时,需要考虑问题本身是否满足递归的要素,即:

1,问题的是否可以分解为规模更小的子问题。

2,是否有一个结束条件。

同时在写代码的时候还要注意一点,子问题的解必须参与到本次问题的解的核心逻辑当中。

下面是我在考虑好了问题后,给出我自己写的代码

#include 
#include 

//递归算法函数定义
int max_f(int arr[],int icur,int remain)//arr 数组首地址,icur代表本次问题涉及的元素下标,remain为剩下的元素个数
{
    int max_val;
    if(remain== 1) return arr[icur];//退出条件为剩下元素个数为1时,直接返回对应下标的数据
    //下面是核心逻辑
    int remain_max = max_f(arr,icur+1,remain-1);//子问题的解,放在变量remain_max当中 这里其实是“递归”当中的递,相当于步进
    if(arr[icur]>remain_max)//子问题的解参与到核心逻辑当中
    max_val= arr[icur];//核心逻辑 求本次问题的解
    else
    max_val=remain_max;//核心逻辑 求本次问题的解

    return max_val;//得到本次问题的解 返回  这里其实是“递归”思想当中的归 相当于回溯。
}
int main()
{
    int arr[]={1 ,2,3,4,5,6,7,8,9,0};
    int max_v = max_f(arr,0,10);
    printf("max val is %dn",max_v);
    return 0;
}



递归函数的实现与函数参数定义是紧密相连的,参数相当于数据结构。不同的参数定义,写出来的算法不同,我们求同存异,把握好思想。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1012599.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号