给出一个数字N(比如5)如何求的他的所有数

需求

1:如题,比如说5 有5!种排列方式(12345)

如何求出所有的五位数字

2:C语言实现

#include
using namespace std;
int main()
{
int sum,a,b,c,d,e;sum=0;
for(int i=10000;i<100000;i++)
{
a=/10000
b=(i/1000)%100;
c=(i/100)%10;
d=(i/10)%10;
e=i%10;
if(a==5||b==5||c==5||d==5||e==5)
{printf(i);
}
}
}


int factorial(int N)
{
if (N == 1 || N == 0)
{
return 1;
}
return N * fac(N - 1); //使用了递归
}

这是要求出N的全排列?

#include <stdio.h>  
    
    
      
    void permutation(int k, int n, int a[])  
    {  
        //递归到底层  
        if(k == n-1)  
        {  
            for(int i = 0; i < n; i ++)  
                printf("%d-", a[i]);  
            printf("\n");  
        }  
        else  
        {  
            for(int i = k; i < n; i ++)  
            {  
                int temp = a[k];  
                a[k] = a[i];  
                a[i] = temp;  
      
                //交换后递归下一层  
                permutation(k+1, n, a);  
      
                //保证每一层递归后保持上一层的顺序  
                temp = a[k];  
                a[k] = a[i];  
                a[i] = temp;  
            }  
        }  
    }  
    int main()  
    {  
        int a[100];  
        int n,k;  
        printf("取n个不同的元素,n为:");
        scanf_s("%d", &n);  
      printf("元素为(元素不能重复):");
        for(int i = 0; i < n; i ++)  
           {
               scanf_s("%d",&k);
               a[i] = k;  
        }
        permutation(0, n, a);  
        int ll;
        scanf_s("%d",&ll);

        return 0;  
    }  

https://blog.csdn.net/eternitybubble/article/details/81059521