用递规函数求20的阶乘

来源:百度知道 编辑:UC知道 时间:2024/05/05 23:50:46
是个编程题,网上的朋友帮帮忙!

#include "stdafx.h"

#include "math.h"

#define MAX_N 10000000.00 //能够计算的最大的n值,如果你想计算更大的数对数,可将其改为更大的值

#define MAX_MANTISSA (1e308/MAX_N) //最大尾数 (10^308/10000000=10^300)

struct bigNum

{

double n1; //表示尾数部分

int n2; //表示指数部分

};

void calcFac(struct bigNum *p,int n)

{

int i;

double MAX_POW10_LOG=(floor(log10(1e308/MAX_N))); //最大尾数的常用对数的整数部分,

double MAX_POW10=(pow(10.00, MAX_POW10_LOG)); // 10 ^ MAX_POW10_LOG

p->n1=1;

p->n2=0;

for (i=1;i<=n;i++)

{

if (p->n1>=MAX_MANTISSA)

{

p->n1 /= MAX_POW10;

p->n2 += MAX_POW10_LOG;

}

p->n1 *=(double)i;

}
<