请帮分析一下递归函数过程

zhangyuan850 zhangyuan850 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
有一个递归函数求出数组里最大的数,俺没有理解,有数字序号的是俺添加的,主要是看看变量和数组值,请朋友帮分析其具体过程:

#include<iostream>
using namespace std;
int diguimax(int a[],int n)
{
int f;
if (n==1)
{
   /* cout<<"n==1"<<endl; (1)*/
   /* cout<<"n==1,a[0]="<<a[0]<<endl; (2)*/
return a[0];

}

f=diguimax(a+1,n-1);
/* cout<<"f="<<f<<",,a[0]="<<a[0]<<endl; (3)*/
if (f>a[0])
{
/* cout<<"f>a[0],f="<<f<<"a[0]"<<a[0]<<endl; (4)*/
return f;
}
/* cout<<"f bu dayu "<<f<<","<<a[0]<<endl; (5)*/
return a[0];

}
int main()
{
int c[]={7,29,36,28,6,-5};

cout<<diguimax(c,6)<<endl;
return 0;

}
主函数运行,diguimax(c,6)这步是调用函数diguimax( ),把数组和数组数量传递过去。
到了递归函数,由于n=6,所以第一个IF语句不成立,就到了f=diguimax(a+1,n-1);此时f=diguimax(a+1,5);a+1指向”29“,这个时候 f 好像没有被赋具体值吧,接着调用diguimax( )函数,这时n=5,第一个if 语句仍然不成立,还是f=diguimax(a+1,n-1);"a+1"指向“36”,下一次指向“28”,反复直到f=diguimax(a+1,n-1);“ a+1”指向“6”,n-1=3-1=2,再调用递归f=diguimax(a+1,n-1); “a+1”指向“-5”,n=1,再调用递归,到了第一个if 语句处,数字序号为(2) cout<<a[0]显示为"-5",到 了数字序号(3)处,f=-5, a[0]=6,这时f = -5理解,但是a[0]=6这步值怎么来的?在到数字序号(5)处:f= -5,a[0]=6,,然后return a[0]就是把a[0]=6返还给 f=diguimax(a+1,n-1)这个f ?到了下一行(3)处,则 f=6, a[0]=28到这里没有看明白,最后返回最大值为“36”,怎么递归又反向递归了啊。
请朋友帮给分析说明一下,谢谢。
...全文

相关推荐

计算递归函数调用次数

根据题目要求使用递归函数,根据题目给定的数学算式,求出Succ(n)的值。可以在每一次调用递归函数时增加一个计数器,用来计算调用了多少次函数,最后输出Succ(n)的值和调用递归函数次数的值。

bellissima224

javascript递归函数定义和用法示例分析

主要介绍了javascript递归函数定义和用法示例分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

weixin_38731553

Python递归函数实例讲解

在本文中我们通过实例给大家讲解了关于Python递归函数的用法以及相关知识点,需要的朋友们学习下。

weixin_38577200

Python 递归函数详解及实例

Python 递归函数 如果一个函数体直接或者间接调用自己,那么这个函数就称为递归函数.也就是说,递归函数体的执行过程中可能会返回去再次调用该函数.在python里,递归函数不需要任何特殊的语法,但是它需要付出一定的努力去理解和创建. 我们会以一个简单的例子开始:写一个函数求一个自然数中所有数字的和.在设计递归函数的时候,我们会寻找能把问题分解成简单的问题的方法.在这道题中,运算符%和//可以用来把一个数分成两部分:最低位和不包含最低位数字两部分. 18117的数字和为:1+8+1+1+7=18.这样我们就可以分割这个数.把这个数分割成最低位7和不包含最低位数字的和1+8+1+1=11.这

weixin_38654382

Python递归函数特点及原理解析

主要介绍了Python递归函数特点及原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

weixin_38674616
评论 8
收藏 已收藏
分享
返回顶部
zhangyuan850
VC.NET 7,538 成员 27,670 内容