【发布时间】:2018-12-09 05:31:02
【问题描述】:
我正在尝试编写一种称为排列的方法。基本上,我希望它接受一个整数,然后返回从 0 到 x -1 的所有数字排列。我意识到这应该返回一个数组数组。但是,我正在努力实际实施这一点。有人可以帮助我以更好的方式思考这个问题吗?我正在用java编码这个。我意识到这可能是一个递归问题,但除此之外我不知所措。
我想过有两种方法,一种方法是接收整数并从 0 - x-1 创建第一个数组。然后是另一个接受数组和一些整数“开始”的方法。这样索引开始处的整数不会改变,但会与其他数字交换。这将在 for 循环内,因此“开始”位置将在整个数组中发生变化。我对此的唯一提示是我的 for 循环将递归调用该方法。但是,我在思考如何实际实现这一点和交换算法时遇到了麻烦。
谁能告诉我我是否正在考虑这个权利,以及他们是否有任何想法或提示可以给我?我没有代码可以分享,因为我对此的大部分想法都是白板的。
【问题讨论】:
-
@maxihatop 但是OP想用递归来实现它。
-
@user202729 OP 不想,他认为他可能应该。这是错误的;迭代解决方案可能在各方面都更好。
-
有一个经典的迭代算法(例如在 Knuth 的 TAOCP 中找到,但要旧得多)。见rosettacode.org/wiki/Permutations#Java
标签: java algorithm permutation