java编程题

有一个整数 0<n<10 输出n的阶乘项 如 当n = 3 时,如 123 132 231 213 312 321 就是输出n的阶乘项 当n = 4 的时候组成的是四位数 , 5的时候是5位数,其中每位上都是不同的。。不重复 当给定一个n 输出所有项
写一个java方法用来实现上述功能

[code="java"]
public class Test8
{
/**
* 排列 用1、2、3这三个数字,打印出所有不同的排列, 如:123、132等
*
*
* @param sb
* 符合条件的数字
* @param list
* 输入的数字
* @param index
* 第几位
* @param k
* 已经用过的数组下标
*
* @return
*/
public static Object a2(StringBuffer sb, String[] list, int index, String k)
{
String[] objs = list;

    for (int i = 0; i < objs.length; i++)
    {
        int ff = 0;
        // 是否第一次,第一次不需要判断是否用过
        if (!k.equals("-1"))
        {
            String[] iss = k.split(",");
            for (int j = 0; j < iss.length; j++)
            {
                // 判断该数字是否已经用过了
                if (iss[j].equals(i + ""))
                {
                    ff = 1;
                    break;
                }
            }
        }
        if (ff == 1)
        {
            // 用过的数字不能再用,重新计算
            continue;
        }

        sb.append(objs[i] + ",");

        if (list.length - 1 == index)
        {
            System.out.println(sb.toString());
        }
        else
        {
            a2(sb, objs, ++index, k + "," + i);
        }
        --index;
        sb.delete(sb.length() - 2, sb.length());
    }

    return "";
}

public static void main(String[] args)
{
    // 输入的数字
    int k = 3;
    StringBuffer in = new StringBuffer();
    for (int i = 1; i <= k; i++)
    {
        in.append(i).append(',');
    }

    String[] objs = in.toString().split(",");
    StringBuffer sb = new StringBuffer();
    a2(sb, objs, 0, "-1");
}

}
[/code]