- 博客(2)
- 收藏
- 关注
原创 C语言函数递归经典练习解析(图文)(全排列问题,青蛙上台阶问题)
并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。已知一只青蛙可以选择一次上一阶或两阶台阶,求上n个台阶的方法共有多少种。执行一次程序之后a变为第二个数,b变为第三个数,c变为第四个数。1).若最后一步为两个台阶,则需计算前面f(n-2)的情况。2).若最后一步为一个台阶,则需计算前面f(n-1)的情况。会进行大量且重复的计算,所以这种方式的效率较低。我们可以从逆着写,改为正着写以减少重复的计算。通过上图我们就可以清晰直观的看到如何去递归。青蛙的最后一步是走两个台阶还是一个台阶。
2024-09-15 15:54:19 627
原创 c语言解决汉诺塔问题(常规与递推方式)(图文)
在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。作者也是刚刚接触c语言的小白,如果有什么不对的地方或者可以优化的地方希望大家多多包涵。f(n)是一个首相为1 公比为2的等比数列。step1:该问题可以看作由上面n层转到。即f(n)=2^(n-1)-1。4. 2的n次方代码的实现。所以f(n)=2f(n-1)图2:此时2号变为了一号。用数学的方式再优化一下。上的最后一层移到C上。
2024-09-13 10:09:39 359 2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人