C语言递归求排列的结果
排列:一般地,从n个不同元素中取出m(m≤n)个元素,按照一定的顺序排成一列,叫做从n个元素中取出m个元素的一个排列(permutation)。
排列的计算公式如下:
- 算法分析:
我们很容易想到用递归写n的阶乘,n!=n*(n-1) (n-2) …2*1
特别的,当n=0时,n!=1
- 解题过程:
(1)、定义求n的阶乘的函数fact。
(2)、定义permutation函数,调用fact函数,分别传参数为n 和(n-m)。
- 注意:
需要注意的就是递归过程中的递归出口条件,本题中当n=1或者当n=0时到达程序出口,返回1。
代码块:
#include<stdio.h>
int fact(int n);
int permutation(int n,int m);
int main()
{
int n,m;
printf("输入总数n=");
scanf("%d",&n);
printf("输入需要排列的数m=");
scanf("%d",&m);
printf("%d\n",permutation(n,m));
}
int fact(int n) //自定义fact函数,用来求n的阶乘
{
if(n<0)
return 0;
else if(n==0 || n==1)
return 1;
else
return n*fact(n-1);
}
int permutation(int n,int m)
{
int A;
A=fact(n)/fact(n-m);
return A;
}
版权声明:本文为weixin_43787492原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。