程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c 快速排序 堆棧-c語言中的堆棧變化區別

c 快速排序 堆棧-c語言中的堆棧變化區別

編輯:編程解疑
c語言中的堆棧變化區別

請問一下通過循環實現一到一百想加和通過遞歸實現 堆棧變化有什麼區別呢

最佳回答:


    int sum = 0;
    for (int i = 0; i <= 100; i++) {
        sum += i;
    }
 int caculate(int i) {
    if (i == 0)
        return 0;
    else
        return i + caculate(i - 1);
}

你好,上邊是兩種方式代碼的實現。首先,程序運行後,代碼都會被加載到內存的某片內存區域中,在for循環中,是沒有棧操作的,對於i從1到100的變化,i是被放到寄存器中進行保存的,沒執行完一次結構體,寄存器中i++,cpu指針會再次指到到for代碼內存起點處,繼續執行,如此反復100邊,當i到達上限100後,寄存器會捨棄i循環完畢。而對於遞歸,相信就比較簡單了,肯定是要使用棧操作的,從100加到1的99次遞歸過程中,是一個不斷的帶參數入棧過程,當i=0時,程序開始返回,又是一個不斷出棧的過程。總體來說,遞歸比for循環需要更多內存來進行操作。以上就是我的一些解答,都是以前上匯編課程時學習的。如果還是不理解,建議去學習一下匯編基礎知識。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved