递归入门的两段代码

来源:互联网 发布:免费选股软件 编辑:程序博客网 时间:2024/06/05 09:41

c教材上的汉诺塔有点看不懂,我的入门代码就是看懂了函数那一章自己乱想的如下代码


第一种是“做,嵌套,做”【比喻:一层一层左右对称的剥皮



第二种是“嵌套,做,嵌套”【比喻:影分身术




#include<stdio.h>void print1(int m)//递归3210123【一层一层的最简单的递归,(自己瞎想的)】{printf("%d", m );//要干的事if (m == 0)  return; //递归出口(结束本函数这层)print1(m - 1);//<——调用自己,(影响出口的)参数在变《注意向下一层传递的参数变小了1!》/*——————return【肯定需要到出口】了上一行函数的那一“层”,再做这一层的后面代码(这就是我一直没明白的东西)*/printf("%d", m );//要干的事return;//本层结束了就进行上一层了}void print2(int m)//递归1213121【这是通常意义的递归】{if (m == 0)  return;//递归出口(结束本函数这层)print2(m-1);//<——调用自己,(影响出口的)参数在变《注意向下一层传递的参数变小了1!》printf("%d",m);//要干的事print2(m-1);//<——调用自己,(影响出口的)参数在变《注意向下一层传递的参数变小了1!》return;//本层结束了就进行上一层了}int main(){int n;scanf("%d", &n);print1(n);//递归3210123printf("\n");print2(n);//递归1213121printf("\n");}


0 0
原创粉丝点击