汇编语言递归求C(n,k)
答案:2 悬赏:70
解决时间 2021-02-17 19:16
- 提问者网友:嘚啵嘚啵
- 2021-02-17 05:04
汇编语言递归求C(n,k)
最佳答案
- 二级知识专家网友:夜余生
- 2021-02-17 05:42
; 杨辉三角只是引导你推导或回忆起C(n,k)=C(n-1,k)+C(n-1,k-1)。然后利用它构建递归组合函数。并未要求输出杨辉三角,难道是输出范例中有要求?
;
; 程序需满足:
; 1,类型为x86
; 2,输入为键盘输入的2个64位无符号整数,忽略数字以外的其他字符
; 3,输出为标准输出
; 4,参数传递方式为栈传值
; 5,返回值存于rax
; 6,其他:
; 检查并报告溢出错误
; 所有数字,中间值及结果都是64位
Comb:
pushrbp
movrbp,rsp
pushrbx
pushrdx
movrax,[rbp+16]
movrbx,[rbp+24]
cmprax,rbx
jgpError;无符号转移
jestopcond
Testrax,rax
jestopcond
movrdx,rax
decrbx
decrax
pushrbx
pushrax
callComb
pushrbx
push rdx
movrdx,rax
callComb
addrax,rdx
jmpexit
stopcond:
movrax,1
jmpexit
pError:
xorrax,rax
jmpexit
exit:
poprdx
poprbx
movrsp,rbp
poprbp
ret
追问:答案只有K等于1或者K=n-1时才对啊, 其他就不行了
追答:若是k=0或k=n时正确,则容易理解为栈失衡。
将‘ret’改为‘ret 128’后重试!
;
; 程序需满足:
; 1,类型为x86
; 2,输入为键盘输入的2个64位无符号整数,忽略数字以外的其他字符
; 3,输出为标准输出
; 4,参数传递方式为栈传值
; 5,返回值存于rax
; 6,其他:
; 检查并报告溢出错误
; 所有数字,中间值及结果都是64位
Comb:
pushrbp
movrbp,rsp
pushrbx
pushrdx
movrax,[rbp+16]
movrbx,[rbp+24]
cmprax,rbx
jgpError;无符号转移
jestopcond
Testrax,rax
jestopcond
movrdx,rax
decrbx
decrax
pushrbx
pushrax
callComb
pushrbx
push rdx
movrdx,rax
callComb
addrax,rdx
jmpexit
stopcond:
movrax,1
jmpexit
pError:
xorrax,rax
jmpexit
exit:
poprdx
poprbx
movrsp,rbp
poprbp
ret
追问:答案只有K等于1或者K=n-1时才对啊, 其他就不行了
追答:若是k=0或k=n时正确,则容易理解为栈失衡。
将‘ret’改为‘ret 128’后重试!
全部回答
- 1楼网友:等灯
- 2021-02-17 06:52
我觉得你还是把pascal语言的贴出来吧
看汇编本来就是很恼火的事情
你还放上来编译器生成的汇编
看汇编本来就是很恼火的事情
你还放上来编译器生成的汇编
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯