DSAverse
Recursion
Loading Recursion Visualizer...
Recursion Tree
depth: 1f(n) = f(n-1) + f(n-2)
Initializing Sorting Algorithms...
Sorting
Trees
Graphs
Preparing interactive visualizations...
Recursion
Loading Recursion Visualizer...
Recursion Tree
depth: 1f(n) = f(n-1) + f(n-2)
Fix each position left-to-right via swaps, recurse, then swap back. Watch n! permutations emerge from systematic backtracking.
Click Play to begin permutation generation.
def permutations(nums):
result = []
def backtrack(start):
if start == len(nums):
result.append(nums[:]) # found a permutation
return
for i in range(start, len(nums)):
nums[start], nums[i] = nums[i], nums[start] # swap
backtrack(start + 1)
nums[start], nums[i] = nums[i], nums[start] # swap back
backtrack(0)
return result
# [1, 2, 3] → 6 permutationsO(n · n!)O(n)3! = 6How many permutations does an array of n distinct elements have?