试图理解排列生成
trying to understand permutation generation
我正在尝试理解给定 here 的排列算法
我不清楚的是他们提到的第一段伪代码
array = [1, 2, 3, 4]
function permutation(start, end):
#i will go from start to end
for i -> (start, end+1):
permutation(start+1,end)
为什么在 for i 循环中使用了 end+1,据我所知,end+1 应该超出必须应用排列的数组索引,但事实并非如此这是我不清楚的地方。
作者熟悉Python,并在伪代码中使用了相同的(不幸的)成语。在 Python 中,范围的开始是 包含 ,而结束是 不包含 。该页面后面的 Python 代码摘录证明确实如此:
for i in range(start, end+1):
使用此代码 i
将按顺序分配从 start
到 end
的所有整数,但不包括 end + 1
.
在 C 语言中,人们经常会在循环中使用 <
- 那么它也会在那里发生:
for (size_t i = start; start < end + 1; start++)
^^^^^^^
虽然写
更自然
for (size_t i = start; start <= end; start++)
for i -> (start, end+1)
表示从start开始对每个值进行迭代,自增且条件满足end+1
permutation(start+1,end)
这只是同一个函数调用,参数的开始和结束值传递给它
例如
function permutation(start, end)
开始 = 1 结束 = 10
foreach 内部将从 1 开始自动递增迭代直到达到 10,意味着小于 (10+1) = 11
然后调用permutation(start+1,end)
假设第一项 start = 1。它将以 2 开始调用,以 10
结束
我正在尝试理解给定 here 的排列算法 我不清楚的是他们提到的第一段伪代码
array = [1, 2, 3, 4]
function permutation(start, end):
#i will go from start to end
for i -> (start, end+1):
permutation(start+1,end)
为什么在 for i 循环中使用了 end+1,据我所知,end+1 应该超出必须应用排列的数组索引,但事实并非如此这是我不清楚的地方。
作者熟悉Python,并在伪代码中使用了相同的(不幸的)成语。在 Python 中,范围的开始是 包含 ,而结束是 不包含 。该页面后面的 Python 代码摘录证明确实如此:
for i in range(start, end+1):
使用此代码 i
将按顺序分配从 start
到 end
的所有整数,但不包括 end + 1
.
在 C 语言中,人们经常会在循环中使用 <
- 那么它也会在那里发生:
for (size_t i = start; start < end + 1; start++)
^^^^^^^
虽然写
更自然for (size_t i = start; start <= end; start++)
for i -> (start, end+1)
表示从start开始对每个值进行迭代,自增且条件满足end+1
permutation(start+1,end)
这只是同一个函数调用,参数的开始和结束值传递给它
例如
function permutation(start, end)
开始 = 1 结束 = 10
foreach 内部将从 1 开始自动递增迭代直到达到 10,意味着小于 (10+1) = 11
然后调用permutation(start+1,end) 假设第一项 start = 1。它将以 2 开始调用,以 10
结束