用C语言编一程序求10的阶乘

用C语言编一程序求10的阶乘,第1张

递归函数求

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位变量来保存结果,但由于使用了单字节变量作为示例,仅适用于小型数据输入。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11218525.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存