这个程序fun()函数的结束是怎么实现的,有点没搞清楚


#include<iostream>
#include<cstring>
using namespace std;
char a[20],b[20];
bool c[20];
int n;
void fun(int);
void print();
int main(){
    cin>>a;
    n=strlen(a);
    fun(1);
    return 0;
}
void fun(int k){
    int i;
    for(i=0;i<n;i++){
        if(!c[i]){
            b[k]=a[i];
            c[i]=1;
            if(k==n)
                print();
            else
                fun(k+1);
            c[i]=0;
        }
    }
}
void print(){
    for(int i=1;i<=n;i++)
        cout<<b[i];
    cout<<endl;
}

if(k==n)就不会递归了。

没结束,错误代码