B错误 程序是可以各层调用的,只要弊镇有引用头差粗文件就可以
C对 如果没有完全套住内分程序怎么还叫嵌套程序呢,而且也违背封装性吧!
你可以这么理解,所谓递归调用,就是调用一系列内容相同的子程序,这些子程序的参数和自己定义的变量都是不相同的,互相不干扰,调用一次需要等待该次调用返回后继续执行剩下语句。
假设调用:
s=qys(12,14)qys(12,14): x=12,y=14, y不等于0, qys(y,x%y)[qys(14,12)], 等待这个调用完成后再返回结果
qys(14,12): x=14,y=12, y不等于0, qys(y,x%y)[qys(12,2)], 等待这个调用完成后再返回结果
qys(12,2): x=12,y=2, y不等于0, qys(y,x%y)[qys(2,0)], 备戚等待这个调帆滚局用完成态让后再返回结果
qys(2,0): x=2,y=0, y等于0, 返回x值即2
qys(12,2): qys返回2,返回2
qys(14,12): qys返回2,返回2
qys(14,12): qys返回2,返回2
赋值:s=2
需要明白的是函数嵌套是语言特性,递归调用是逻辑思想。
函数嵌套允许在一个函数中调用另外一个函数,比如有三个函数
funca()
{
funcb()
}
funcb()
{
funcc()
}
funcc()
{
cout <<"Hello" <<endl
}
这个就叫做嵌套调用,它是一个语言提供的程序设计的方法,也就是语言的特性。
而递归是一种解决方案,一种思想,将一个大工作分为逐渐减小的小工作,比如说一个和尚要搬50块石头,他想,只要先搬走49块,那剩下的一块就能搬完了,然后考虑那49块,只要先搬御春走48块,那剩下的一块就能搬完了……,递归是镇铅耐一种思想,只不过在程序中,就是依靠函数嵌套这个特性来实现了。
递归最明显的特点就是,自己调用自己(不就嵌套调用了嘛)。
funca()
{
if(statement1)
funca()
else
exit(0)
}
概括说,函数嵌激激套就是函数调用函数,是普遍的,递归就是函数调用自身,使函数嵌套的一个特例。
我说的不知道明不明白,有点乱……
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)