title: Please explain this algorithm to get all permutations of a String
body: <p>The following code generates all the permutations for a string:</p>
  
  <pre><code>def permutations(word):
      if len(word)&lt;=1:
          return [word]
  
      #get all permutations of length N-1
      perms=permutations(word[1:])
      char=word[0]
      result=[]
      #iterate over all permutations of length N-1
      for perm in perms:
          #insert the character into every possible location
          for i in range(len(perm)+1):
              result.append(perm[:i] + char + perm[i:])
      return result
  </code></pre>
  
  <p>Can you explain how it works? I don't understand the recursion.</p>