伯努利-欧拉装错信封问题
马小虎在人人网上结交一批女网友,在情人节那天,马小虎玩起了浪漫,同时给n个女网友每人写了一封各有特色的信,要命的是,激动的他竟然把所有的信都装错了信封!编写一个程序,计算将所有的信都装错信封,共有多少种不同情况?例如,3封信全装错信封的种数为2,即231和312. 输入输入包含若干组数据。每组数据是一个整数N(1<=N <=30),表示马小虎写信的封数。N = 0 时输入结束。输出对于每组数据,在单独的一行输出一个整数(所有的信都装错信封的种数)。
伯努利-欧拉装错信封问题
#include
#include
#include
#define N 100
//套用递归计算
double digui(double);
int jiecheng(int);
int main()
{
int n[N], i;
printf("请输入信件数量( > 0, 输入0结束):\n");
scanf("%d", &n[0]);
for(i = 0; n[i] != 0; i ++)
{
n[i] = jiecheng(n[i]) * (1 + digui((double)n[i]));
scanf("%d", &n[i + 1]);
}
printf("完全装错信件的种数:\n");
for(i = 0; n[i] != 0; i ++)
{
printf("%d\n", n[i]);
}
return 0;
}
double digui(double n)
{
double x;
if(n > 0)
{
x = digui(n - 1);
//y = jiecheng(n);
//z = pow(-1, n);
n = x + pow(-1, n) / jiecheng(n);
}
return n;
}
int jiecheng(int n)
{
if(n > 1)
{
n = n * jiecheng(n - 1);
}
return n;
}