python遞迴return n1 or n2 and 1 or digui n 1digui n 2 是什麼意思

時間 2021-07-16 08:28:41

1樓:第一碗羊雜割

此程式可改寫為:

def digui(n: int) -> int:

if n ==1 or n == 2:

return 1

else:

return digui(n - 1) + digui(n - 2)

對於主程式語句

return (n == 1 or n == 2) and 1 or (digui(n - 1) + digui(n - 2))

來說,它由被or分隔開的兩個語句構成。首先or左邊的語句

return (n == 1 or n == 2) and 1

此語句相當於使用if條件語句做的一個基本條件,即用來終結遞迴語句的進行,防止無限遞迴的發生。相當於:

if n == 1 or n == 2:

return 1

意思是當樓梯只有一層或兩層時,直接輸出1,因為只有一種走法(1層時原地不動,2層時只能向上走一步)。

然後or右邊的語句

or digui(n - 1) + digui(n - 2)

這句中的or相當於if語句中的

else:

即若不屬於

n == 1 or n == 2

的情況時,開始執行如下遞迴步驟,步驟為

digui(n - 1) + digui(n - 2)

這裡要有一個遞迴思想,假設有n階樓梯,走第一步時只有兩種選擇,要麼跨兩階要麼跨一階,那麼:

第一步跨一階:

那麼此時還剩(n - 1)階樓梯,這n - 1階的跨樓方法自然變成digui(n - 1)

第一步跨兩階:

那麼此時還剩(n - 2)階樓梯,這n - 2階的跨樓方法自然變成digui(n - 2)

所以對於n階樓梯來說,總共的跨樓方法是

digui(n - 1) + digui(n - 2)

種。對於n - 1或n - 2級樓梯來說,他們各自又會有

digui(n - 1) + digui(n - 2)   # 注意這裡的n代表的是的n - 1或者n - 2,而不是                               # 最初的n。

種方法,如此迴圈下去,便形成了一個遞迴,直到樓梯數目n減為1或者2時,進入基本條件,遞迴終止。

說句題外話,其實此問題就是一個斐波那契數列的應用,抽象成數學問題就是:

有斐波那契數列 1,1,2,3,5,8,13,21,……  從第三個數開始,每個數都是前兩個數之和,求第n個數的值。

如果變成這樣的問題可能更好思考一些。

2樓:匿名使用者

n級樓梯,第一步可以跨一或二級,還有n-1或n-2級樓梯,總的走法為n-1樓梯的走法加上n-2階樓梯的走法,即digui(n-1)+digui(n-2)

這個程式當n==1或n==2時直接返回1,

return (n == 1 or n == 2) and 1 or (digui(n-1) + digui(n-2))

簡化為a and b or c,當a成立時返回 b的值,(n==1 or n==2)成立時返回1,a and b不成立時返回c的值,(n==1 or n==2)不成立時返回(digui(n-1)+digui(n-2))的值

即def digui(n):

if n == 1 or n == 2:

return 1

else:

return digui(n-1) + digui(n-2)

而且這個程式根本就不對,2級樓梯可以一次走一級,也可以 一次走二級,有兩種走法,這個程式 會返回 1,if n==1 or n==2:retun n 當n=2時會返回2這樣才對

走樓梯應該是從第0級開始,如果一開始就在第一級上就要先減一級print digui(n-1)

計算機程式語言有哪些?

3樓:祕雁汲雲露

答:成千上萬。

最主流:

c++;

最基礎:basic

工程應用:fortran

教學語言:

pascal

新手應該學習什麼程式語言?

4樓:匿名使用者

1.看你的情況說明,建議還是學“易語言”或者vb

2.易語言是中文環境,背後的實質是c語言,vb呢,屬於初學者語言,好入門。

3.”不管c/vb/c++/c#學會之後不都是一樣可以做出軟體嗎?“答案是肯定的。

只要熟練掌握一門語言,都是可以做出軟體的。只不過看你的目的了,若是自己用無所謂,若是但是以此求職謀生,那需要看應聘的單位需要什麼語言了。

5樓:千鋒教育

對於初學者,想做簡單的程式設計的話,建議從c語言開始入門。c語言是最主流的基礎語言。現在軟體開發上所用的的主流的高階程式語言大多數都是以c語言為基礎演化而來的,掌握好c語言有助於學習其他的高階程式語言。

在學習過程中推薦參考譚浩強的c語言教程,非常適合入門級別的教材,在學習中還要注重實際操作,技術的提高來與源於**量的積累。

6樓:匿名使用者

如果你只是打算學來玩玩的話,易語言和vb是最簡單的了,易語言寫遊戲外掛方便。

如果你是認真的話,只推薦你學c或c ,優點有樓下說的,畢竟沒哪個公司開放軟體用易語言的吧,學易語言工作都會找不到。如果你下定了決心的話,那就把全部的精力學c和彙編,把這2個學精通。

7樓:流風

c# 簡單,文件多,開發工具方便

其他語言要麼開發工具麻煩,要麼語言麻煩

計算機程式設計入門應該學什麼語言

8樓:春流婉轉繞芳甸

可以先學習python,這被認為是計算機語言裡比較簡單易懂的語言,可以自學或者搜尋相關課程進行學習。

程式語言一共有多少種?

一般遊戲程式設計用什麼語言和軟體

9樓:安徽新華電腦專修學院

你好,軟體開發不存在好語言或差語言,任何語言都可以,只是存在效率的差別。舉個例子:一個複雜的數**算,人工計算需要100年,而用計算機計算只要1秒鐘,這就是效率的差別。

指令碼語言和程式語言的區別是什麼?

10樓:學雅思

1、指令碼語言:又被稱為擴建的語言,或者動態語言,是一種程式語言,用來控制軟體應用程式。

2、程式語言:一種計算機語言讓程式設計師能夠準確地定義計算機所需要使用的資料,並精確地定義在不同情況下所應當採取的行動。

二、特點不同

1、指令碼語言:指令碼通常以文字(如ascii)儲存,只在被呼叫時進行解釋或編譯。

2、程式語言:程式在執行時可以改變其結構,開發快速,接近自然語言,易於理解,更方便的**管理。

三、優缺點不同

1、指令碼語言:指令碼語言極大地簡化了“開發、部署、測試和除錯”的週期過程。大多數指令碼語言都能夠隨時部署,而不需要耗時的編譯/打包過程。

2、程式語言:任何程式語言的使用都需要確保編寫的程式能夠根據實際需要及時調整。因此,快速原型開發環境非常重要,在這種環境下,動態語言和相關庫的結合可以大大增強其優勢。

最簡單的程式語言是什麼

11樓:源白鶴

其實最簡單的程式語言是scratch,c和vb一點也不簡單

python中如何使用遞迴實現這個功能

紫薇參星 按照你的要求用遞迴的方法得到你要的資料的python程式如下 python函式遞迴的實現 只要獲得所有點即可,x1為x軸起點,x2為x軸終點,gao為縱軸長度,i為切分次數.x1 0 x2 10 gao 8 f 0,gao,x1,x2 f i 0,gao,x1,x2 t double x1...

什麼是遞迴函式?怎樣實現遞迴,遞迴函式F n 的遞迴演算法是什麼

假面 遞迴就是一個函式在它的函式體內呼叫它自身。執行遞迴函式將反覆呼叫其自身,每呼叫一次就進入新的一層。遞迴函式必須有結束條件。當函式在一直遞推,直到遇到牆後返回,這個牆就是結束條件。所以遞迴要有兩個要素,結束條件與遞推關係。遞迴有兩個基本要素 1 邊界條件 確定遞迴到何時終止,也稱為遞迴出口。2 ...

程式的遞迴演算法與非遞迴的區別,程式的遞迴演算法與非遞迴有什麼區別?

南北 遞迴演算法是一種直接或者間接地呼叫自身的演算法。在計算機編寫程式中,遞迴演算法對解決一大類問題是十分有效的,它往往使演算法的描述簡潔而且易於理解。遞迴就是在過程或函式裡呼叫自身。在使用遞迴策略時,必須有一個明確的遞迴結束條件,稱為遞迴出口。遞迴演算法解題通常顯得很簡潔,但遞迴演算法解題的執行效...