![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
递归
递归
草莓味的c
你喜欢吃橙子吗?
展开
-
递归实现整数转字符串
相当于依次输出该数的各个位置上的数void convert(int n){ int i; if(n<0){//对负数,先输出负号,再做为正数处理 putchar('-'); putchar(' '); n=-n; } if((i=n/10)!=0){ convert(i); } //想想为什么写%10,而不直接写n? //执行完最深层的递归后,往回走,从这个出口出来继续执行下面的语句 //如果不带%10,eg:输入436,结果会是4 43 436 printf("%原创 2021-01-29 17:40:35 · 454 阅读 · 1 评论 -
经典递归:汉诺塔问题
有三个柱子,三个盘子都在第一个柱子上,现在要移到第三个柱子上,要求移动过程中盘子相对位置不变,小的还是在上,大的在下。思路:分两步:1.将n-1个盘从一个柱子移到另一个柱子(借助另外一个柱子)(n>1);2.将1个盘子从一个柱子移到另一个柱子//用3个柱子移动n-1个盘子,目的:把所有盘子从x移到z void hanoi(int n,char x,char y,char z){ void move(char a,char b); if(n==1){ move(x,z);原创 2021-01-29 17:36:56 · 294 阅读 · 0 评论 -
递推和递归的区别:以在4个整数中找出最大的数为例
递归有两个阶段:回溯和递推。回溯:要求的这个东西可以一步一步的转成更小的部分,相当于分解;递推:已知这个问题的组成中的一小部分,向上推,相当于回溯的逆过程。以在4个整数中找出最大的数为例递推://递推找出4个中最大的int max_4(int x,int y,int z,int w){ int max_2(int a,int b); int m; m=max_2(x,y);//此时m为x,y中最大的 m=max_2(m,z);//此时m为x,y,z中最大的 m=max_2(m,w);/原创 2021-01-29 11:31:45 · 417 阅读 · 0 评论