欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

斐波那契数列的递归算法,有点异常,不知道原因。哪位高手帮小弟我看看

更新时间: 2014-01-05 03:16:46 责任编辑: Author_N1

 

斐波那契数列的递归算法,有点错误,不知道原因。谁帮我看看

TITLE Save an array and dispaly


INCLUDE Irvine32.inc
.data

array DWORD 12 DUP (?)   ; define a array for saving Fibonacci numbers
step = type array
num DWORD ?
count DWORD ?

prompt byte "The first fibonacci numbers are ",0
prompt1 DWORD "  ",0

.code
main PROC

  mov eax,0
  mov esi,offset array
 
  call readint
  
  mov ecx,eax
  mov edx,ecx
  
  mov ebx,0
  mov [esi],ebx
  
  mov eax,[esi]
  call writeint
  
  
  mov ebx,1
          mov [esi + step],ebx
          
          mov eax,[esi + step ]
          call writeint
          
          mov eax,0
          
          
  mov num,ecx
  mov count,2
  
  push [esi]
  push [esi + step]
          call Fibonacci  
          
mov ecx,edx
L2:
pop ebx
mov eax,ebx

call writeint

add esp,4

loop L2         
          

           
          
          call crlf
          call waitmsg
          


exit
main ENDP

Fibonacci proc
  
 
          cmp ecx,count
          jl L1
          
          mov eax,0
          add eax,[esi]
          
          
          
          add esi,step
          add eax,[esi]
          
         
          
          add esi,step
          mov [esi],eax
          
          push [esi]
                 
          sub esi,step
          inc count
          
          
          call Fibonacci      ;for recursion
                      
              
              
L1:

ret
loop L1


Fibonacci endp 
END main

         
      
      






我这程序是输入一个位数,然后通过调用函数实现递归,最后输出这个位数的斐波那契数列。我的思想是定义好数列的前两项,并且把它推进栈,然后通过递归调用本身,每次循环计算出一个数列中的数,并把它推进栈,当达到这个位数的时候跳出,并且输出。输出的话,通过调用pop出栈,每次出一个数,存储在ebx中,然后通过eax输出,ESP寄存器移位。这是我的程序的基本思想和流程,但是还是有错误,求大神教导

(push操作和pop操作不知道有没有理解错,push:是将数据压到一个临时存储器就是栈,pop:是将栈中的数据挨个拿出来。但是要符合先进后出原则。)
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 03:16:46
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/20330/
本文WWW.DOC100.NET DOC100.NET版权所有。