ディスクの数を入れる必要があるハノイの塔のこの再帰関数を作成し、移動の数を返します...うまく機能しますが、これの反復関数を作成する方法を知りたいです...
これが私の機能です...
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
これを聞いて申し訳ありませんが、反復関数と再帰関数の違いと、どちらを使用するのが良いかについてもっと理解したいと思います...ありがとう!!!