大整數(shù)階乘問題的遞推算法
//:===========“大整數(shù)階乘”問題的遞推算法===========
#define MAXN 1000 //最大數(shù)據(jù)位數(shù)
//用遞推法求取整數(shù)k的階乖,將結(jié)果放入數(shù)組array中
void pnext(int array[],int k)
{
int *temp; //動態(tài)數(shù)組[臨時存儲運(yùn)算大整數(shù)]
int i,j,num_len = array[0],carry,t; //循環(huán)變量,長整數(shù)位數(shù),進(jìn)位標(biāo)志,臨時變量
if(array[0] >= MAXN)
{
printf("數(shù)據(jù)處理位數(shù)超過程序設(shè)計上限,程序?qū)⒆詣又袛噙\(yùn)行!\n");
exit(1);
}
temp = (int *)malloc(sizeof(int) * (num_len + 1)); //創(chuàng)建動態(tài)數(shù)組
for(i=1;i<=num_len;i++)
temp[i] = array[i]; //保存原始數(shù)據(jù)
for(j=1;j {
for(carry = 0,i=1;i<=num_len;i++)
{
if(i <= array[0])
t = array[i] + temp[i] + carry;
else
t = array[i] + carry; //處理最高位
//數(shù)據(jù)位調(diào)整
array[i] = t % 10;
carry = t / 10;
}
if(carry)
相關(guān)推薦:北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |