不怎么理解下面的代码啊?谁来解释下
#include<iostream> #include<string> using namespace std; char str[100]; void swap(int i,int j) { char ch=str[i]; str[i]=str[j]; str[j]=ch; } void Foo(char *str,int s,int e) { int start; if(s==0) start=s; else start=s+1; for(int i=start;i<e;++i) { swap(s,i); cout<<str<<endl; Foo(str,s+1,e); swap(s,i); } } int main() { cin>>str; Foo(str,0,strlen(str)); return 0; }