10
的阶乘
#include
<stdio.h>
long
int
fun(int
n)
//递归函数
{
if
(n==1||n==0)
return
1
else
return
(n*fun(n-1))
}
void
main()
{
int
n
printf("输入要求阶乘的数\n")//输入10就行了。不能输入太大的数,道理你应该知道呵呵!
scanf("%d",&n)
printf("%d的阶乘是%ld\n",n,fun(n))//调用函数
}
如果你只求10的阶乘
可以直接给n
赋值为10
不用输入
以下是一种基于x86架构的汇编语言(NASM)实现:Copy code
section .data
result db 1 初始化结果为1
section .text
global _start
_start:
mov ecx, 10 使用ecx寄存器计数
cmp ecx, 0 检查10是否为0,是则跳过循环
je done
loop:
mul byte[result] 乘以目前的结果
dec ecx 计数器减1
cmp ecx, 0 如果计数器为0,则跳出循环
jne loop
done:
结束程序
mov eax, 1系统调用号1代表退出
xor ebx, ebx 返回值为0
int 0x80 执行系统调用
以上程序将10的阶乘计算在result变量中。由于10的阶乘为一个很大的数,需要使用一个64位变量来保存结果,但由于使用了单字节变量作为示例,仅适用于小型数据输入。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)