Understanding Recursion to generate permutations

前端 未结 6 1869
别跟我提以往
别跟我提以往 2020-11-27 09:43

I find recursion, apart from very straight forward ones like factorial, very difficult to understand. The following snippet prints all permutations of a string. Can anyone h

6条回答
  •  误落风尘
    2020-11-27 10:22

    This code and reference might help you to understand it.

    // C program to print all permutations with duplicates allowed
    #include 
    #include 
    
    /* Function to swap values at two pointers */
    void swap(char *x, char *y)
    {
        char temp;
        temp = *x;
        *x = *y;
        *y = temp;
    }
    
    /* Function to print permutations of string
       This function takes three parameters:
       1. String
       2. Starting index of the string
       3. Ending index of the string. */
    void permute(char *a, int l, int r)
    {
       int i;
       if (l == r)
         printf("%s\n", a);
       else
       {
           for (i = l; i <= r; i++)
           {
              swap((a+l), (a+i));
              permute(a, l+1, r);
              swap((a+l), (a+i)); //backtrack
           }
       }
    }
    
    /* Driver program to test above functions */
    int main()
    {
        char str[] = "ABC";
        int n = strlen(str);
        permute(str, 0, n-1);
        return 0;
    }
    

    Reference: Geeksforgeeks.org

提交回复
热议问题