如何遞歸乾燥這段代碼以避免月份重複。遞歸DRY代碼,計算幾個月的天數,Java
我有一個想法,把1月的基本情況,並處理其他月份遞歸計算dayOfYear從上個月,然後將當前月添加到它。 類似if (month == 1) { ... } else { ... dayOfYear(month-1, dayOfMonth, year) ... } correct
但我不太確定實施情況,也不知道這是否是一種準確的方法。
假設我有一個這樣的陣列,其中,我可以存儲所有的我的日子 INT [] monthLengths =新INT [] {31,28,31,30,...,31}
public static int dayOfYear(int month, int dayOfMonth, int year) {
if (month == 2) {
dayOfMonth += 31;
} else if (month == 3) {
dayOfMonth += 59;
} else if (month == 4) {
dayOfMonth += 90;
} else if (month == 5) {
dayOfMonth += 31 + 28 + 31 + 30;
} else if (month == 6) {
dayOfMonth += 31 + 28 + 31 + 30 + 31;
} else if (month == 7) {
dayOfMonth += 31 + 28 + 31 + 30 + 31 + 30;
} else if (month == 8) {
dayOfMonth += 31 + 28 + 31 + 30 + 31 + 30 + 31;
} else if (month == 9) {
dayOfMonth += 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31;
} else if (month == 10) {
dayOfMonth += 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30;
} else if (month == 11) {
dayOfMonth += 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31;
} else if (month == 12) {
dayOfMonth += 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 31;
}
return dayOfMonth;
}
你爲什麼不只是使用API? –
「...通過遞歸計算...」您的代碼不是遞歸的。 – Turing85
爲什麼你不想僅僅創建靜態數組'int [12]'並且把所有天數放在這裏? –