c语言递归小讲
来源:互联网 发布:公安部网络安全保卫局 编辑:程序博客网 时间:2024/06/05 18:34
代码1:函数调用函数的递归,死循环递归,这种递归会提示堆栈溢出的问题
下面是执行图解:
代码2:下面这个递归也很简单,就是循环递归,可以控制次数,比如下面我们要打印10次gogogo
下面是执行图解:
代码3:下面我们用递归做一个1+......100
下面是加到5的图解分析
代码4:这道题就会有点难度了,腾讯面试题,假定有一个很长的台阶,一次只能走一步或2步,你有多少种走法走到台阶上去(假设台阶有50步)
假设1个台阶-->1种方法1
假设2个台阶-->2种方法11 2
假设3个台阶-->3种方法111 12 21
假设4个台阶-->5种方法1111 121 112 211 22
.......
由此我们总结出了一个规律:f(n)=f(n-1)+f(n-2);
就比如说我们想走到第五十步台阶,要么从48开始走,要么从49开始走。那么走到48有几种方法,走到49又有几种方法......
由此,我们从上面可以得到递归的精髓:每一步都依赖于上一步,数据特别大时,利用公式来求解
代码5:把一个十进制整数变成二进制数据
除基取余法,倒序排列
下面是数字10变二进制码的图解过程:
代码6:计算阶乘
代码7:用递归打印如下图形
主要是找到规律,根据金子塔相应的高度打印不同的金子塔。返回的是炮弹的数量
代码8:使用c编写一个指数函数,实现n^k
代码9:写一个递归函数,求最大公约数,gcd(m,n),计算m,n的最大公约数。
代码10:写一个递归函数digit_sum(n);输入一个非负整数,返回组成它的数字之和
代码11:计算一个数字的根,数字根的定义是,它是一个非负整数,它的所有数字和,反复相加,直到只剩下一个数字为止。例如:1729
1729->1+7+2+9=19
19->1+9=10
10->1+0=1
那么1就是这个数字的根
代码12:计算组合数:C(n,r)=n!/r!(n-r)!
好了,递归就算说道这么多吧,递归我下次还会更深入的说。- c语言递归小讲
- C语言进阶-6讲: 递归法问题求解
- C语言进阶-7讲: 递归经典:汉诺塔
- 递归,到处都是递归----小话c语言(10)
- C语言进阶-第6讲:递归法问题求解(易列写递归方程)
- C语言进阶-第6讲:递归法问题求解(递归求数组的最大值)
- C语言第一讲
- C语言第二讲
- C语言第三讲
- C语言第四讲
- 小论c语言递归与递推
- 2、小论c语言递归与递推
- C语言进阶-第6讲:递归法问题求解(两数的最大公约数)
- C语言 阶乘递归
- C语言之递归
- C语言 -- 递归学习
- C语言递归练习
- C语言递归
- c语言指针一些简单讲解
- c语言复习中遇到的问题
- 劳斯Ji
- c语言数组一些重要讲解
- Mac OS X 下 Chrome 去掉第三方扩展提示“请停用以开发者模式运行的扩展程序”的方法
- c语言递归小讲
- Chapter 3:迭代器概念以及 traits 编程技法
- Notes of Python
- S3C2440之看门狗
- LeetCode 473. Matchsticks to Square
- JavaScript基础
- JavaScript 使用误区
- Leetcode House Robber III
- Leetcode Top K Frequent Elements