递归算法?怎么实现

如题所述

第1个回答  推荐于2016-02-07
举个例子:
让你求出1到n的全排列。例如3:123 132 213 231 312 321
对于n=3的情况,你可以写3个for 循环来枚举每一位,判断各个为上的数字数否相等,若都不相等,那么输出。
但是对于n的其他情况,由于你不知道n等于几,所以你没法写n个for循环。
用递归算法可以解决这个问题。
一共递归n层,到达第n层时就不再递归了,如果没有到达第n层,那么就在该层写一个for循环,然后递归进入下一层。
pascal代码:(仅用于写n个for循环)
procedure dfs(k:longint);
var i:longint;
begin
if k>n then exit;
for i:=1 to n do
dfs(k+1);
end;本回答被提问者采纳