递归(C语言)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归(C语言)相关的知识,希望对你有一定的参考价值。
首先,给每位新娘打扮得几乎一模一样,并盖上大大的红盖头随机坐成一排;
然后,让各位新郎寻找自己的新娘.每人只准找一个,并且不允许多人找一个.
最后,揭开盖头,如果找错了对象就要当众跪搓衣板...
看来做新郎也不是容易的事情...
假设一共有N对新婚夫妇,其中有M个新郎找错了新娘,求发生这种情况一共有多少种可能.
Input
输入数据的第一行是一个整数C,表示测试实例的个数,然后是C行数据,每行包含两个整数N和M(1<M<=N<=20)。
Output
对于每个测试实例,请输出一共有多少种发生这种情况的可能,每个实例的输出占一行。
Sample Input
2
2 2
3 2
Sample Output
1
3
为什么不过。。。
#include<stdio.h>
unsigned __int64 ff(unsigned __int64 n)
unsigned __int64 i,sum;
sum=1;
for(i=1;i<=n;i++)
sum=sum*i;
return sum;
__int64 a[23]=0,0,1,2;
int main()
unsigned __int64 sum,i,j,n,m,t;
scanf("%I64u",&j);
for(t=0;t<j;t++)
scanf("%I64u%I64u",&n,&m);
for(i=4;i<=22;i++)
a[i]=(a[i-1]+a[i-2])*(i-1);
sum=a[m]*ff(n)/((ff(m))*(ff(n-m)));
printf("%I64u\n",sum);
return 0;
亲 你这个不是递归吧~~~递归是函数对自身的调用 你的程序里没有出现一个 ff(ff(n)) 类似的程序哇
看你编程的思路有点乱,给你重新写一个吧...这道题就是求若干个n个数集合m个数的组合个数
(当满足n>m 且 m>1)
既然你说递归,那就写个递归的(虽然循环比递归好上万倍~~~)
#include<stdio.h>
int jiecheng(int n)//递归求阶乘
if(0 != n)
return jiecheng(n-1)*n;
else
return 1;
int main()
char num,n,m;
scanf("%d",&num);
while(num--)
scanf("%d %d",&n,&m);
if(n>m && m>1)
printf("%d\n",jiecheng(n) / jiecheng(m));
else
printf("0\n");
return 0;
参考技术A 同楼上 递归太耗内存了
C语言你编程:用递归方法实现对一个整数 的 逆序输出
输入输出 示例:
Enter a number:12345
54321
void printData(int data)
if (data==0)
return;
printf("%d",data%10);
printData(data/10);
int main()
int data;
printf("Enter a number:");
scanf("%d",&data);
printData(data);
printf("\n");
return 0;
程序如上,可以运行。 参考技术A #include <stdio.h>
#include <stdlib.h>
void print_order_number(unsigned number)
printf("%d",number%10);fflush(NULL);
if ( number >= 10 )
print_order_number(number/10);
int main(int argc, char**argv)
if ( argc != 2 )
printf("Usage: rev_print <integer> \n");
exit(0);
unsigned number = atol(argv[1]);
print_order_number(number);
return 0;
以上是关于递归(C语言)的主要内容,如果未能解决你的问题,请参考以下文章