// 還記得10進製的乘法麼?// 567
// * 5
// -------
// 2835
// 用程式語言表示出來就是
// 當前的int a[4] =
// 然後從最低位開始用5去乘以每一位,少於10的部分就是這
// 個位新的值超過10的部分就是進製,加入他的前一位的結果
// 那麼從最低位開始a[0]*5=35,由於沒有進製所以a[0]=5, carry
// =3,a[1]*5=30,加上進製3=33,所以a[1] =3, carry=3,以此類推最
// 高位就是a[3] =2;所以我們的到的陣列就是a[4] =,結果
// 當然就是2835拉。
#include #define size 500 // size 500就可以表示結果在500*6=3000位以內的大整數
#define base 1000000 // 目前使用進製的基數,1000000進製,6位的底數可以處理1000以內的階乘
// 超過1000的話會溢位,因為最大的六位數
//乘以4位數可能超過32位整數的範圍
// 當處理大一點的階乘的話就要相應減小這個值
// 所以當你求1千萬的階乘的時候記得base是10,呵呵。
unsigned int a[size];
void jiechen(int n)
if(carry != 0) //最高位有進製就調整當前最高位
a[++max] = carry;
}
printf("%d!=", n); //以下是列印過程
printf("%d", a[max]); //最高位我們不列印前面的0,不然看起來不爽xd
for(i=max-1; i>=0; i--) //注意:是從高位開始列印的
printf("%06d", a[i]); //列印6位,注意要包括前面的0,還有修改了base的話記得改這裡!列印6位,不足的補0
printf("\n");
}int main()
數字階層和 遞迴演算法
題目 求1 2 3 20 和 分析 雙重for迴圈很簡單。重點分析下遞迴方法 當我們去求20 時可以理解為20 19 在理解為20 19 18 最後變為20 19 18 1 1的階乘和為1。從這裡可以看出遞迴的現象,定義遞迴開始和終止條件即完成了 package com.math.forth 求1 ...
CSS 7階層疊水平
1.層疊水平 當兩個元素層疊水平相同的時候,這時候就要遵循下面兩個準則 後來居上原則 誰 z index 大,誰在上的準則 層疊上下文,你可以理解為 js 中的作用域,乙個頁面中往往不僅僅只有乙個層疊上下文 因為有很多種方式可以生成層疊上下文,只是你沒有意識到而已 在乙個層疊上下文內,我們按照層疊水...
CSS 7階層疊水平
著名的7階層疊水平 stacking level 層疊上下文 background border 負z index block塊狀水平盒子 正常流失布局,非inline block,無position定位 static除外 float浮動盒子 無position定位 static除外 的float浮...