您必須使用遞歸來解決這些問題。
可以非審查解決它們,您可能會很想使用您已經理解的工具。但是,這打敗了本練習的目的,即使用遞歸變得更加自在。
對於這些練習中的每一個,都不使用任何代碼,您應該確定以下幾點:
通過了解問題並提出一些樣本輸入和輸出來開始每個問題。在某些演習中,我們為您提供了樣本輸入和輸出,以方便您。
寫一個遞歸功能,該功能計算了多少羊在籬笆上跳躍。您的程序應將數字作為輸入。該數字應該是您擁有的綿羊的數量。該功能應顯示數字以及消息“另一隻綿羊跳過籬笆”,直到不再留下綿羊。
編寫一個稱為powerCalculator()的函數,該函數採用兩個參數,一個整數作為基礎,而另一個整數作為指數。該函數返回升高的基數值為指數的功率。僅使用大於或等於0的指數(正數)
-Powercalculator(10,2)應返回100- poptalecalculator(10,-2)應返回指數> = 0
編寫一個逆轉字符串的函數。以字符串作為輸入,反向字符串,然後返回新字符串。
計算第n個三角數。一個三角形數計數可以形成等邊三角形的對象。第n個三角數是組成一個三角形的點數,側面n個點,等於1到n的n個自然數的總和。這是三角數序列:1、3、6、10、15、21、28、36、45。
編寫一個遞歸功能,該函數將基於分離器(類似於String.Prototype.split)的字符串拆分。不要使用JS數組的拆分功能來解決此問題。
編寫一個遞歸函數,該函數打印給定數字的斐波那契序列。斐波那契序列是一系列數字,其中每個數字是前一個數字的總和。例如,斐波那契序列中的第7個斐波那契數為13。序列看起來如下:1,1,1,2,3,5,8,13。
編寫一個遞歸功能,以找到給定數字的階乘。可以通過將該數字乘以自身和1之間的每個數字來找到一個數字的階乘。例如,5的階乘為5 * 4 * 3 * 2 * 1 = 120。
您已經進入迷宮,需要找到自己的出路。通過迷宮到單個出口點有多個可能的路徑。編寫遞歸功能,可以幫助您找到迷宮的可能路徑。
迷宮表示為n*m矩陣。起點是左上角,出口由e表示。為了簡單目的,將迷宮的右下角用作出口。您不能超越迷宮的邊界。迷宮的段落被阻止,您無法通過它們。這些被阻止的段落由 *表示。禁止通過封鎖的單元格以及通過您之前已經通過的單元格。
對於鑽探中的大迷宮,可能的出口路徑可以是rrdddllddrrrrrr
使用上述大迷宮並修改解決方案,以便找到迷宮中的所有可能出口路徑。要查找迷宮中所有可能的出口路徑,請考慮一下您在每個回合中可以移動多少個地方。可能向上,向下,左或右?
請注意,此迷宮有3條出口路徑。您的遞歸功能應用適當的方向打印所有三個路徑。例如,給定上面的迷宮,該程序應輸出以下內容:
Anagram是使用給定(“主題”)單詞或短語的字母中的任何單詞或短語,以另一個重新排列的順序。編寫一個創建Anagram列表的函數,列出給定單詞的所有重排。例如,如果用戶類型為“ EAST”,則該程序應列出所有24個排列,包括“ EATS”,“ ETAS”,“ TEAS”和“ TSAE”之類的非單詞。
提示:對於您的算法,您可能需要考慮一個前綴,並使用它來創建新單詞。例如,給定“東”,使用“ e”作為前綴,然後將其放在“ ast” - “ ast”,“ ats”,“ sat”,“ sta”,“ sta”,“ tas”和“ tas”和“ tsa”的所有6個排列前。這將為您提供“ East”,“ Eats”,“ ESAT”,“ ESTA”,“ ETAS”和“ ETSA”的單詞。繼續這樣,直到找到“東方”的所有字符。然後,您可以將“ A”用作前綴,並輸入其餘單詞“ EST”。對於“東方”,應該有24個單詞。
編寫一個遞歸功能,該功能將組織圖表對像打印在鑽頭中。您的輸出應如鑽頭所示,並有適當的凹痕以顯示層次結構。
編寫一個遞歸函數,以打印給給定數字的二進製表示。例如,該程序應將3作為輸入和打印11作為輸出,或25作為輸入,並打印11001作為輸出。請注意,0的二進製表示應為0。