;計算階乘 (fact.
asm)
include irvine32.inc
.code
main proc
push 5
;計算5!,將引數儲存在棧中
call factorial ;計算階乘(eax)
call writedec ;顯示結果
call crlf ;
call waitmsg ;
exit ;
main endp
;------
----
----
----
----
----
----
----
----
----
----
- factorial proc
;計算階乘
;接收[ebp+8]
=n,需計算的數字
;返回:eax=n!;--
----
----
----
----
----
----
----
----
----
----
----
- push ebp
mov ebp,esp ;
mov eax,
[ebp+8]
;獲取n
cmp eax,
0;是,繼續
ja l1 ;否,返回1
mov eax,1;
jmp l2 ;
l1:dec eax ;
push eax ;計算fact
(n-1
) call factorial ;
;每一次遞迴呼叫返回時
;都要執行下面的指令
returnfact:
mov ebx,
[ebp+8]
;獲取n
mul ebx ;edx:eax=eax*ebx
l2:pop ebp ;返回eax
ret 4
;清除堆疊
factorial endp
end main
大數值階乘計算函式
階乘往往由於數值巨大而無法用乙個long int或者double型別資料儲存。近日無聊寫了個大數值階乘的計算函式,理論上只要記憶體足夠,能夠計算出任何數值的階乘,但實際上100萬以上的階乘計算不管是時間消耗還是記憶體消耗都是極為驚人的,建議使用該函式計算100萬以下的階乘。為了有足夠的空間儲存結果,...
階乘計算 大數計算
輸入乙個正整數n,輸出n 的值。其中n 123 n。演算法描述 n 可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列a來表示乙個大整數a,a 0 表示a的個位,a 1 表示a的十位,依次類推。將a乘以乙個整數k變為將陣列a的每乙個元素都乘以k,請注意處理相應的進製。首先...
十五 階乘計算
題目 階乘計算 輸入乙個正整數n,輸出n 的值。其中n 1 2 3 n。演算法描述 n 可能很大,而計算機能表示的整數範圍有限,需要使用高精度計算的方法。使用乙個陣列a來表示乙個大整數a,a 0 表示a的個位,a 1 表示a的十位,依次類推。將a乘以乙個整數k變為將陣列a的每乙個元素都乘以k,請注意...