《電腦程式的構造和解釋》讀書筆記之線性遞迴

來源:互聯網
上載者:User
文章目錄
  • process 與 procedure 在本書中的區別
  • 線性遞迴

本人愚笨,被譯書中“計算過程”與“過程”弄暈了都毫不知情。process 在譯書中被譯為:“計算過程”;procedure被譯為:“過程”。而 process 有時又譯為“過程”。

process 與 procedure 在本書中的區別

process 是程式在電腦中的處理過程。見譯書的第1頁第1段第1行:“計算過程(computational process)是存在於電腦裡的一種抽象,在其演化發展中,這些過程(process)會去操作另外被稱為資料(data)的抽象事物。”。

procedure 是對 process 用程式設計語言來進行描述,也就是程式的源碼。見譯書第3頁第1行:“計算過程的Lisp描述,稱為過程(procedures)”。

弄清兩者的區別後,繼續閱讀 1.2 節的遞迴 process 與遞迴 procedure。

p.s. TopLanguage群組中有高手在談 programming 翻譯為“編程”?“程式設計(program design)”?一樣有意思。有爭論就有進步嘛。

線性遞迴

線性遞迴與樹形遞迴相區別,不同點可以看累加、階乘執行個體。關於“遞迴”的知識,下面引用Dexter.Yy的《遞迴與遞推:JavaScript在斐波那契數的尾遞迴方法》中的:

在程式執行的過程中,“遞迴”(recursive)指的是一種方法,把大的複雜的問題分解成更小更簡單的問題,逐級分解下去,直到問題的規模小到可以直接求解,然後再逐級向上回溯直到解決最初的問題。遞迴的計算過程(recursive process)包含了兩個階段,先逐級擴充(expansion),構造起一個由被延遲的操作組成的鏈條(會被解譯器儲存在堆棧裡),然後在收縮(contraction)階段逐級回溯執行那些操作。

Ackermann(阿克曼)函數是以德國數字家阿克曼命名的函數,它是線性遞迴中線性增長較快的一種。在網上有習題 1.10 的答案

下面是用JavaScript改寫的程式實現:

function A(x,y){    if(y==0)    {        return 0;    }    if(x==0)    {        return 2*y;    }    if(y==1)    {        return 2;    }    else{        return arguments.callee(x-1,arguments.callee(x,y-1));            }}

用C#語言的程式實現:

using System;class TestCase{    static int A(int x, int y)    {        int sum = 0;        if(y==0)        {            return sum;        }        if(x==0)        {            sum = 2*y;            return sum;        }        if(y==1)        {            sum = 2;            return sum;        }        else        {            sum = A(x-1, A(x, y-1));            return sum;        }    }    static void Main()    {        Console.Write(A(1, 10));    }}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.