for i in {1..n}
貌似i不会被解析成数字,递归函数里的循环变量i
一定要定义成local
!!
#! /bin/bash
read n
read m
cnt=0
# dfs(int i)
for((i=1;i<=n;i++))
do
vis[$i]=0
done
dfs() {
if [ $1 -eq $n ]
then
cnt=`expr $cnt + 1`
fi
local i=0
for((i=1;i<=n;i++))
do
if [ ${vis[$i]} -eq 1 ]-
then
continue
fi
vis[$i]=1
a[$1]=$i
dfs `expr $1 + 1`
if [ $cnt -eq $m ]
then
return 0
fi
vis[$i]=0
done
}
dfs 0
echo ${a[*]}