「这是我参与11月更文挑战的第11天,活动详情查看:2021最后一次更文挑战」
最近,想复习一下C语言,所以笔者将会在掘金每天更新一篇关于C语言的文章! 各位初学C语言的大一新生,以及想要复习C语言/C++知识的不要错过哦! 夯实基础,慢下来就是快!
5.用非递归的方式模拟实现strlen函数
strlen:计算字符串长度的库函数,需要引用string.h头文件。遇到\0停止计数。
strlen和sizeof是一对有点相似的东西,具体的大家可以去看看我之前的文章.关于strlen和sizeof区别的文章链接:
C语言-strlen与sizeof区别
1 | arduino复制代码//非递归方式 |
6.用递归的方式模拟实现strlen函数
图解
1 | arduino复制代码//递归的方式 |
7.用非递归实现字符串逆序
方法:使用双指针,一个指向左边,一个指向右边。左指针指向的字符和右指针指向的字符交换。 循环条件为:left < right
1 | ini复制代码//非递归方式 |
运行结果:
8.用递归实现字符串逆序
图解
当大家遇到看不懂得递归,也可以像我一样,假设一个例子,然后用展开图来理解一下!
1 | ini复制代码//递归方式 |
image.png
9.用递归计算一个数拆分成每一位之后的每位之和
图解
1 | arduino复制代码int DigitSum(int n) |
运行结果:
10.用递归实现计算n的k次方
图解
1 | arduino复制代码int my_pow(int n, int k) |
运行结果:
11.用非递归求第n个斐波那契数
图解
1 | arduino复制代码//8.求第n个斐波那契数 |
此种写法需要计算很多重复的数,效率低!
方法2:迭代计算
1 | ini复制代码//方式2 |
运行结果:
递归习题练习到这里就差不多结束了,明天,我会给大家带来两个经典的递归问题:青蛙跳台阶和汉诺塔问题!欢迎大家持续关注!
今天就先到这吧~感谢你能看到这里!希望对你有所帮助!欢迎老铁们点个关注订阅这个专题! 同时欢迎大佬们批评指正!
本文转载自: 掘金