汇编递归程序设计

汇编递归程序设计,第1张

#include <stdio.h>int fac(int n)

{

if (n) return fac(n-1)*n

return 1

}void main()

{

printf("%d\n", fac(6)) // 数字随你改,也可以通过键盘输入。

}

 杨辉三角只是引导你推导或回忆起C(n,k)=C(n-1,k)+C(n-1,k-1)。然后利用它构建递归组合函数。并未要求输出杨辉三角,难道是输出范例中有要求?

 

 程序需满足:

 1,类型为x86

 2,输入为键盘输入的2个64位无符号整数,忽略数字以外的其他字符

 3,输出为标准输出

 4,参数传递方式为栈传值

 5,返回值存于rax

 6,其他:

 检查并报告溢出错误

 所有数字,中间值及结果都是64位

Comb:

push rbp

mov rbp, rsp

push rbx

push rdx

mov rax, [rbp+16]

mov rbx, [rbp+24]

cmp rax, rbx

jg pError 无符号转移

je stopcond

Test rax, rax

je stopcond

mov rdx, rax

dec rbx

dec rax

push rbx

push rax

call Comb

push rbx

push    rdx

mov rdx,rax

call Comb

add rax, rdx

jmp exit

stopcond:

mov rax, 1

jmp exit

pError:

xor rax,rax

jmp exit

exit:

pop rdx

pop rbx

mov rsp, rbp

pop rbp

ret


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存