#分享 【程式學習成果分享】用Java實作遞迴(part 2)

2021年9月29日 01:32
前情提要
用遞迴判斷一個整數是否為質數
imgur
用遞迴判斷一個整數是否為質數(第二個方法)
imgur
用遞迴將字串轉為整數
imgur
用遞迴計算下圖中的數學式
imgur
imgur
用遞迴印出一個特殊的數列(舉例來說,若使用者輸入的兩個正整數依序為16和5,則螢幕會印出「16 11 6 1 -4 1 6 11 16」;若使用者輸入的兩個正整數依序為4和1,則螢幕會印出「4 3 2 1 0 1 2 3 4」。也就是說,當數列遞減到0或負整數時,便開始遞增,直到與第一項相同的整數為止。)
imgur
用遞迴印出一個特殊的數列(第二個方法)
imgur
用遞迴計算一個字串的長度
imgur
用遞迴將一個陣列的所有元素複製到另一個相同長度的陣列
imgur
用遞迴找出字串中第一個出現的大寫字母
imgur
用遞迴計算一個字串中大寫字母的個數
imgur
用遞迴計算一個字串中大寫字母的個數(第二個方法)
imgur
用遞迴計算一個字串中大寫字母的個數(第三個方法)
imgur
用遞迴計算一個字串中大寫字母的個數(第四個方法)
imgur
用遞迴計算一個字串中大寫字母的個數(第五個方法)
imgur
用遞迴倒序印出一個十進位正整數的二進位表示法
imgur
假設我們只能對一個int型態的值進行遞減以及與0或1比較的運算(我可能翻譯得不好😅,引述一下原文:"Assume that you are not able to perform other operations on an int value than to decrement it and compare it with zero and one. "。),寫出兩個遞迴方法,分別判斷該值是奇數還是偶數(這題是我在某本原文書上看到的習題,但我個人覺得問得蠻無聊的,所以可以看看就好😁。)
imgur
用遞迴印出一個特殊的三角形(舉例來說,假設使用者輸入的5個整數依序為1、2、3、4、5,則螢幕會印出下圖中的三角形,最底下的陣列包含使用者輸入的所有整數,而其它陣列的元素都是下面的陣列當中相鄰的兩個整數和。)
imgur
imgur
用遞迴計算一個字串中所有第一個字元和最後一個字元相同的子字串的個數(舉例來說,若使用者輸入abcab,螢幕會印出7,因為abcab的子字串包括a、ab、abc、abca、abcab、b、bc、bca、bcab、c、ca、cab、a、ab、b,其中a、abca、b、bcab、c、a和b的第一個字元和最後一個字元相同。)
imgur
用遞迴印出字串的組合情形,且順序不變(舉例來說,若使用者輸入123,則螢幕會印出的內容如下圖所示;若使用者輸入1234,則螢幕會印出的內容如下方的第二張圖所示。)
imgur
imgur
imgur
用遞迴印出所有從n個不同的整數當中取出r個整數的組合
imgur
用遞迴印出所有從n個不同的整數當中取出r個整數的組合(第二個方法)
imgur
給定一個字元或兩個以上的不同字元,用遞迴根據給定字元印出所有可能的字串,字串長度最多為給定字元的個數(舉例來說,若給定的字元是a和b,則螢幕會印出的內容如下圖所示。)
imgur
imgur
給定一個字元或兩個以上的不同字元,用遞迴根據給定字元印出所有長度最多為k的字串
imgur
用遞迴計算重複組合(舉例來說,若使用者輸入的兩個整數依序為5和1,則螢幕會印出5,因為「a+b+c+d+e=1」有5個非負整數解;若使用者輸入的兩個整數依序為4和2,則螢幕會印出10,因為「a+b+c+d=2」有10個非負整數解;若使用者輸入的第二個整數是0,不論第一個整數為何,螢幕一律印出1,因為所有未知數都必須為0,所以只有1個非負整數解;若使用者輸入的第二個整數小於0,不論第一個整數為何,螢幕一律印出0,因為沒有非負整數解。)
imgur
用遞迴印出一個陣列每個子集合的總和
imgur
用遞迴計算一個正整數的陣列所有總和為某個常數的子集合個數(舉例來說,若使用者輸入的陣列是[2, 5, 8, 4, 6, 11],則螢幕會印出3,因為該陣列總和為13的子集合有3個,分別為[5, 8]、[2, 5, 6]和[2, 11]。)
imgur
用遞迴判斷一個非負整數的陣列是否有總和為某個常數的子集合
imgur
用遞迴判斷一個非負整數的陣列是否有總和為某個常數的子集合(第二個方法)
imgur
用遞迴印出一個正整數的陣列所有總和為某個常數的子集合(子集合的元素不按原本在陣列中的順序)
imgur
用遞迴印出一個正整數的陣列所有總和為某個常數的子集合(第二個方法)
imgur
用遞迴印出一個合數所有的因數(不包括1和本身)組合(舉例來說,若使用者輸入16,則螢幕會印出的內容如下圖所示。)
imgur
imgur
給定一個正整數,用遞迴印出所有非遞增數列,這些數列的總和為該正整數(舉例來說,若使用者輸入4,則螢幕會印出的內容如下圖所示。)
imgur
imgur
用遞迴印出所有長度為n且左半部分與右半部分的總和相等的二進位字串(若n是奇數,則最中間的數字可以是0或1。)
imgur
用遞迴印出所有長度為k且沒有出現連續的1的二進位字串
imgur
用遞迴計算有幾種以不同正整數的n次方和表達一個整數的方式(舉例來說,若使用者輸入的兩個整數依序為100和2,則螢幕會印出3,因為100=10^2=8^2+6^2=1^2+3^2+4^2+5^2+7^2,共有3種表達方式。)
imgur
用遞迴計算有幾種以不同正整數的n次方和表達一個整數的方式(第二個方法)
imgur
用遞迴計算有幾種以不同正整數的n次方和表達一個整數的方式(第三個方法)
imgur
用遞迴計算1到n當中所有數字的總和(舉例來說,若使用者輸入10,螢幕會印出46,因為1+2+3+4+5+6+7+8+9+1+0=46。)
imgur
用遞迴取得資料夾或檔案的大小
imgur
用遞迴實現合併排序法
imgur
用遞迴實現合併排序法(第二個方法)
imgur
用遞迴實現三路合併排序法
imgur
用遞迴實現快速排序法
imgur
用遞迴實現快速排序法(第二個方法)
imgur
用遞迴實現快速排序法(第三個方法)
imgur
用遞迴實現三路快速排序法
imgur
用遞迴實現三路快速排序法(第二個方法)
imgur
用遞迴刪除鏈結串列中的第n個節點
imgur
用遞迴取得鏈結串列的第n個節點
imgur
用遞迴印出鏈結串列的倒數第n個節點
imgur
用遞迴在鏈結串列的末端新增一個節點以及走訪鏈結串列
imgur
用遞迴交錯印出鏈結串列的節點
imgur
用遞迴先由頭至尾、再由尾至頭交錯印出鏈結串列的節點(如果鏈結串列的長度是偶數,則最後一個節點不會被印出來。)
imgur
用遞迴將鏈結串列分割為兩個有交錯節點的鏈結串列(以這支程式為例,printLinkedList(a)會印出「1 3 5 7 」,printLinkedList(b)會印出「2 4 6 」。)
imgur
用遞迴計算鏈結串列的長度
imgur
用遞迴找出鏈結串列的中點
imgur
用遞迴判斷一個整數是否在鏈結串列內
imgur
用遞迴求出鏈結串列中某個整數的出現次數
imgur
用遞迴求出鏈結串列中某個整數的出現次數(第二個方法)
imgur
用遞迴成對的交換鏈結串列中的元素
imgur
用遞迴成對的交換鏈結串列中的元素(第二個方法)
imgur
用遞迴反向印出鏈結串列的節點
imgur
用遞迴將雙向鏈結串列反轉
imgur
用遞迴將鏈結串列重複的節點刪除
imgur
用遞迴判斷鏈結串列是否為回文
imgur
用遞迴將鏈結串列刪除
imgur
用遞迴將所有字元都是數字的字串分割成許多子字串,使得第n個子字串是第(n-1)個子字串和第(n-2)個子字串的和(舉例來說,若使用者輸入11235813,則螢幕會印出[1, 1, 2, 3, 5, 8, 13];若使用者輸入1111223,則螢幕會印出[1, 11, 12, 23];若使用者輸入11121114,則螢幕不會印出任何東西,因為該字串無法分割。)
imgur
用遞迴由左至右依序印出二元樹的葉節點
imgur
用遞迴由右至左依序印出二元樹的葉節點
imgur
給定一個二元樹前序遍歷的結果,用遞迴由左至右依序印出該二元樹的葉節點
imgur
最近有在刷題,所以有少數幾個範例是這幾天才寫的,就順便連同以前寫過的遞迴程式一併附上來了。不過原本我是預計part 2就可以寫完,沒料到篇幅還是這麼的長😱😱,看來要到part 3才能做個結束~
愛心
26
留言 12
文章資訊