大神看过来 一道很简单的算法题
问题描述:
答
代码如下:
#include "stdio.h"
double Fun(int n)
{
double value = 1;
int FenMu = n;
for (int i = 1; i <= n- 3; i++)
{
value = value * ((double)i /(double)FenMu);
FenMu = FenMu - 1;
}
return value;
}
int main()
{
int n;
double result;
while (true)
{
printf("请输入n(要求n>3,输入0结束程序):\n");
scanf("%d", &n);
if (n == 0)
{
break;
}
else
{
result = Fun(n);
printf("%f", result);
}
}
return 0;
}
代码比较简单,就不加注释了。
答
1/n 2/(n-1) * 3/(n-2) * ... *(n-3)/4 * (n-2)/3 * (n-1)/2 * n =F 3/(n-2) * 2/(n-1) *1/n;
前面的第一项和最后一项约掉了。
同时分n是奇数和偶数。技术比偶数多剩一项,即中间的那项。
答
借楼上的回答继续说,
即使奇数比偶数多一项,那多的那一项也是1 所以左边始终是1
那就有 F * (n-2)/3 * (n-1)/2 * n = 1
F = 6/(n-2)(n-1)n
答
6/(n³-3n²+2n)