在Java中,遞歸是一種非常常見(jiàn)的技術(shù),它可以通過(guò)反復(fù)調(diào)用同一個(gè)函數(shù)來(lái)解決問(wèn)題。這種技術(shù)常用于處理樹(shù)形數(shù)據(jù)結(jié)構(gòu)和復(fù)雜的算法問(wèn)題。本文將介紹如何使用遞歸來(lái)計(jì)算100以內(nèi)所有奇數(shù)的總和。
public class Recursive { public static void main(String[] args) { int sum = oddSum(100); System.out.println("100以內(nèi)所有奇數(shù)的和為:" + sum); } public static int oddSum(int n) { if (n<= 1) { return n; } else { if (n % 2 == 0) { return oddSum(n - 1); } else { return n + oddSum(n - 2); } } } }
這里我們定義了一個(gè)名為“oddSum”的遞歸函數(shù),它接受一個(gè)整數(shù)作為參數(shù),并返回從1到該整數(shù)范圍內(nèi)所有奇數(shù)的和,如果參數(shù)小于或等于1,則函數(shù)返回該參數(shù)。在遞歸調(diào)用中,如果傳入的參數(shù)是偶數(shù),則函數(shù)通過(guò)調(diào)用自身并傳入?yún)?shù)n-1來(lái)跳過(guò)該參數(shù)。如果傳入的參數(shù)是奇數(shù),則函數(shù)通過(guò)調(diào)用自身并傳入?yún)?shù)n-2來(lái)處理該參數(shù)。在每一次調(diào)用返回時(shí),函數(shù)將遞歸計(jì)算得到的結(jié)果進(jìn)行累加,最后返回總和。
這里我們使用了if條件語(yǔ)句來(lái)檢查參數(shù)是否為偶數(shù),如果為偶數(shù),則跳過(guò)參數(shù)n,遞歸調(diào)用oddSum(n-1)。否則,將參數(shù)n加入總和中,然后遞歸調(diào)用oddSum(n-2)來(lái)處理下一個(gè)奇數(shù)。
最終,我們?cè)谥骱瘮?shù)中調(diào)用oddSum函數(shù),并傳入100作為參數(shù)。這將計(jì)算出100以內(nèi)所有奇數(shù)的總和,并打印出它的結(jié)果。