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一點也不簡單
什麼是遞迴函式?怎樣實現遞迴,遞迴函式F n 的遞迴演算法是什麼
假面 遞迴就是一個函式在它的函式體內呼叫它自身。執行遞迴函式將反覆呼叫其自身,每呼叫一次就進入新的一層。遞迴函式必須有結束條件。當函式在一直遞推,直到遇到牆後返回,這個牆就是結束條件。所以遞迴要有兩個要素,結束條件與遞推關係。遞迴有兩個基本要素 1 邊界條件 確定遞迴到何時終止,也稱為遞迴出口。2 ...
什麼是遞迴的概念,什麼是「遞迴」?「遞迴」有什麼用?
聲琨 遞迴是一種重要的程式設計技術。該方法用於讓一個函式從其內部呼叫其自身。一個示例就是計算階乘。0 的階乘被特別地定義為 1。更大數的階乘是通過計算 1 2 來求得的,每次增加 1,直至達到要計算其階乘的那個數。下面的段落是用文字定義的計算階乘的一個函式。如果這個數小於零,則拒絕接收。如果不是一個...
c語言遞迴函式,請用C語言編寫遞迴函式
遞迴函式 程式語言中,函式func type a,直接或間接呼叫函式本身,則該函式稱為遞迴函式。遞迴函式不能定義為行內函數。在數學上,關於遞迴函式的定義如下 對於某一函式f x 其定義域是集合a,那麼若對於a集合中的某一個值x0,其函式值f x0 由f f x0 決定,那麼就稱f x 為遞迴函式。函...