C语言中的递归是什么意思
#include<stdio.h>#include<stdlib.h>voidcj(intn);voidmain(){intn=10;cj(n);}voidcj(intn...
#include<stdio.h>
#include<stdlib.h>
void cj(int n);
void main()
{
int n=10;
cj(n);
}
void cj(int n)
{
printf("%d\t",n);
if(n>0)cj(--n);
if(n>0)cj(--n);
}
这个程序是先执行完第一个递归在执行第2个么?搞不懂啊? 展开
#include<stdlib.h>
void cj(int n);
void main()
{
int n=10;
cj(n);
}
void cj(int n)
{
printf("%d\t",n);
if(n>0)cj(--n);
if(n>0)cj(--n);
}
这个程序是先执行完第一个递归在执行第2个么?搞不懂啊? 展开
2个回答
展开全部
递归就是 函数自己调用自己 ..
第一个是主函数 ..
第二个cj()函数才是一个递归函数 ..
在cj()函数体里面 有cj(n--)这个语句 就是它再次调用自己 只不过参数变化了 ..
第一个是主函数 ..
第二个cj()函数才是一个递归函数 ..
在cj()函数体里面 有cj(n--)这个语句 就是它再次调用自己 只不过参数变化了 ..
更多追问追答
追问
不是有2个cj(n--)么,是怎么递归的啊??
追答
你那个写错了 应该是只有一个重复的语句 ..
递归的的思想就是 自己调用自己 ..
一开始主程序中调用cj(10) ..
然后程序执行cj(10)
{
cj(9); //这里 cj()函数调用了自己,参数从10变成了9,然后cj(9)调用cj(8) 以此类推 ..
这就是递归,感觉就像镜子中的镜子一样,一层一层的 ..
}
补充:
不好意思 没写错;
就是cj(10) 运行到cj(0)之后 ..
再从cj(10) 运行到cj(0) ..
展开全部
递归就是递推公式的模拟
函数直接间接的调用自己,一直到可以直接得到结果为止。
必须有一个可以不用递归,直接完成的情况。并且总是能够达到。
不然就是害自己了,你的程序永不结束,直到堆栈空间用完,程序或系统崩溃,莫名奇妙的退出。
真正的程序里,不会出现 阶乘运算、级数运算、幂指数运算等方面使用递归的代码。
这些完全可以使用迭代,而且高效。
递归用在树,图这样的数据结构上以及一些排序算法上,非常自然,而非递归算法却比较难懂,而且还不好实现.
你这个怎么这么象二叉树的先根遍历。
函数直接间接的调用自己,一直到可以直接得到结果为止。
必须有一个可以不用递归,直接完成的情况。并且总是能够达到。
不然就是害自己了,你的程序永不结束,直到堆栈空间用完,程序或系统崩溃,莫名奇妙的退出。
真正的程序里,不会出现 阶乘运算、级数运算、幂指数运算等方面使用递归的代码。
这些完全可以使用迭代,而且高效。
递归用在树,图这样的数据结构上以及一些排序算法上,非常自然,而非递归算法却比较难懂,而且还不好实现.
你这个怎么这么象二叉树的先根遍历。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询