我制作了河内塔的这个递归函数,你必须在其中放置光盘的数量并返回移动的数量......它运作良好,但我想知道如何为此制作一个迭代函数......
这是我的功能...
Create function fnuHanoi (@Nro int)
returns int
as
begin
Declare @Result int
If @Nro = 1
Set @Result = 1
else
Set @Result = (((dbo.fnuHanoi(@Nro-1))*2)+1)
return @Result
end
go
我试过这样的东西......
Create function fnuHanoi (@Nro int)
returns int
as
begin
Declare @Discs int
Declare @i int
Set @Discs = 1
Set @i = 1
while (@Discs <= @Nro)
begin
Set @i = (@i * 2) + 1
end
return @i
end
go
很抱歉问这个问题,但我想更多地了解迭代函数和递归函数之间的区别以及何时使用一个而不是另一个更好......谢谢!