zoukankan      html  css  js  c++  java
  • 递归与堆栈

    #include<stdio.h>
    #include<iostream>
    int  fact(int n) {
        if (n == 1)
            return 1;
        return n * fact(n - 1);
    }
    int main()
    {
        int a;
        std::cin >> a;
        fact(a);
        return 0;
    }//记得我大一第一次学习C语言的时候,学到递归那点怎么也想不明白,老师也不给讲明白。不过如果
    //能从反汇编的角度来看,可能会容易理解一下。
         8: int main()
         9: {
    01045320 55                   push        ebp  
    01045321 8B EC                mov         ebp,esp  
    01045323 81 EC D0 00 00 00    sub         esp,0D0h  
    01045329 53                   push        ebx  
    0104532A 56                   push        esi  
    0104532B 57                   push        edi  
    0104532C 8D BD 30 FF FF FF    lea         edi,[ebp-0D0h]  
    01045332 B9 34 00 00 00       mov         ecx,34h  
    01045337 B8 CC CC CC CC       mov         eax,0CCCCCCCCh  
    0104533C F3 AB                rep stos    dword ptr es:[edi]  
    0104533E A1 00 F0 04 01       mov         eax,dword ptr ds:[0104F000h]  
    01045343 33 C5                xor         eax,ebp  
    01045345 89 45 FC             mov         dword ptr [ebp-4],eax  
        10:     int a;
        11:     std::cin >> a;
    01045348 8B F4                mov         esi,esp  
    0104534A 8D 45 F4             lea         eax,[a]  
    0104534D 50                   push        eax  
    0104534E 8B 0D 90 00 05 01    mov         ecx,dword ptr ds:[1050090h]  
    01045354 FF 15 94 00 05 01    call        dword ptr ds:[1050094h]  
    0104535A 3B F4                cmp         esi,esp  
    0104535C E8 7E BF FF FF       call        __RTC_CheckEsp (010412DFh)  
        12:     fact(a);
    01045361 8B 45 F4             mov         eax,dword ptr [a]  
    01045364 50                   push        eax  
    01045365 E8 FA BC FF FF       call        fact (01041064h)  
    0104536A 83 C4 04             add         esp,4  
        13:     return 0;
    0104536D 33 C0                xor         eax,eax  

    https://blog.csdn.net/zr_lang/article/details/39962679

  • 相关阅读:
    第72天: PySpider框架的使用
    第71天: Python Scrapy 项目实战
    Web前端资源汇总
    1201即将到来
    C#自定义事件模拟风吹草摇摆
    HTML5 Canvas爱心时钟代码
    CSS3圆环动态弹出菜单
    CSS3实现Loading动画特效
    HTML5优势
    CSS3扁平化Loading动画特效
  • 原文地址:https://www.cnblogs.com/binanry/p/9742219.html
Copyright © 2011-2022 走看看