. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->算法讲堂讨论区
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  用递归算法求An=A(n-1)+3*A(n-2).      实在想不出来了 帮帮忙  [待解决] 回复[ 4次 ]   点击[ 1372次 ]  
yang5731
[帖 主]   [ 发表时间:2011-02-11 18:03 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-07-26 12:14
assume cs:code
data segment
var equ 6
data ends
code segment
start:        mov ax,data
        mov ds,ax
        mov bx,var        ;BX=N
        mov cl,3
        call d_g        

        mov ax,4c00h
        int 21h
d_g        proc
        cmp bx,2
        je a1
        cmp bx,1
        je a2
        dec bx
        call d_g                ;N-1
        mov si,ax                ;???这里的SI想用来保存A(n-1),用什么方法可以保存
        dec bx
        call d_g                ;N-2
        mul cl
        add ax,si
        add bx,2
        ret
a1:        mov ax,1
        ret
a2:        mov ax,0
        ret
        
        
d_g        endp
        
code ends
end start
zaixuexi
[第1楼]   [ 回复时间:2011-02-11 23:00 ]   [引用]   [回复]   [ top ] 
荣誉值:93
信誉值:0
注册日期:2010-11-29 14:28
已在你的博客区回复,呵呵.
zaixuexi
[第2楼]   [ 回复时间:2011-02-12 09:24 ]   [引用]   [回复]   [ top ] 
荣誉值:93
信誉值:0
注册日期:2010-11-29 14:28
http://www.asmedu.net/blog/user/postcontent.jsp?neighborId=32952&kindId=47025&postId=50901&readSg=1&vs=1
-----------------------------------------------------------
哦,我昨天没仔细看
设a1=0,a2=1,当N>=3时,an=a(n-1)+3*a(n-2) 
我以为是a0=0,a1=1
你算的结果是对的.
yang5731
[第3楼]   [ 回复时间:2011-02-12 09:58 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-07-26 12:14
这个程序最先可以求出A(n-1),结果我把它保存在SI中,但是在求A(n-2)的时候被改变了。有什么办法可以保存递归中的寄存器??
rotapple
[第4楼]   [ 回复时间:2011-06-16 15:29 ]   [引用]   [回复]   [ top ] 
荣誉值:10
信誉值:6
注册日期:2011-06-01 16:20
push到栈撒~~~
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved