注册 登录
编程论坛 C# 论坛

递归函数

yh3163 发布于 2022-06-14 12:34, 2107 次点击
大佬们,请教一下,递归是什么意思啊,怎么写啊,学习一下
7 回复
#2
厨师王德榜2022-06-14 17:16
函数自身调用自身,直到达到事先设定好的退出条件,就退出.
#3
yh31632022-06-16 13:30
有详细一点的吗
#4
厨师王德榜2022-06-24 11:43
简单的示例就是求一个自然数的阶乘,这是经典的递归用法
 教材上,百度上都有,
#5
yh31632022-07-02 16:45
谢谢
#6
chenyucheng2022-07-09 19:21
#7
yh31632022-07-10 14:32
回复 6楼 chenyucheng
这个也是我发的啊
#8
likaiyihou2022-09-29 14:16
递归的经典应用-汉诺塔问题
规则:汉诺塔是一个发源于印度的益智游戏。相传它源于印度神话中的大梵天创造的三个金刚柱,一根柱子上叠着上下从小到大64个黄金圆盘。大梵天命令婆罗门将这些圆盘逐一按从小到大的顺序移动到另一根柱子上,其中大圆盘不能放在小圆盘上面。当这64个圆盘移动完的时候,世界就将毁灭。
问题:给定任意的盘子数量(柱子始终只有a、b、c 3根),需要多少个步骤才能完成大梵天的命令?具体应该如何移动?

VBA递归函数代码如下:
'汉诺塔问题解决方案
Function hanoi(n As Integer, a As String, b As String, c As String)
    If n = 1 Then hanoi = "moving " & n & " from " & a & " to " & c & " "
    If n > 1 Then hanoi = hanoi(n - 1, a, c, b) & Chr(10) & "moving " & n & " from " & a & " to " & c & " " & Chr(10) & hanoi(n - 1, b, a, c)
End Function
'汉诺塔问题解决步数
Function hanoistep(n As Integer)
    If n = 1 Then hanoistep = 1
    If n > 1 Then hanoistep = hanoistep(n - 1) * 2 + 1
End Function

[此贴子已经被作者于2022-9-29 14:17编辑过]

1