iT邦幫忙

2022 iThome 鐵人賽

DAY 10
0

「上次有關字串的題目,解的還順利嗎?」

「很順利!我回家還自己寫了幾題呢!」曉欣開心的邊說邊打開題目 771. Jewels and Stones

class Solution {
    fun numJewelsInStones(jewels: String, stones: String): Int {
        return stones.count { it in jewels }
    }
}

以及 58. Length of Last Word

class Solution {
    fun lengthOfLastWord(s: String): Int {
        return s.trim()
            .reversed()
            .plus(" ")
            .indexOf(" ")
    }
}

「哇!曉欣好厲害!你怎麼偷偷寫這麼多題的!」

「沒有啦⋯⋯我也是參考別人寫的。這一篇 iThome 鐵人賽的文章 不解題就不能離開的房間 寫的。」

「看人家的文章不丟臉呀,參考前輩的文章也是很好的學習經驗。」

「我覺得這系列文章真的很好!希望有一天可以見到作者⋯⋯」

「你想見到的人好多喔」菁菁不禁大笑。

「沒問題,你繼續學 Kotlin,總有一天會有機會見到他們的」

「今天我們學一個新的程式觀念:遞迴。

簡單的說,遞迴就是函數自己呼叫自身。」

「有點⋯⋯有點類似迴圈嗎?」曉欣不確定的問。

「有些相似。我們實際看一題題目吧!」夏天打開了 509. Fibonacci Number

F(0) = 0, F(1) = 1
F(n) = F(n - 1) + F(n - 2), for n > 1.

「這邊的 F(n) = F(n - 1) + F(n - 2),就是函數自己呼叫自己。所以,我們可以這樣寫:」

class Solution {
    fun fib(n: Int) = when {
        n == 0 || n == 1 -> n
        else -> fib(n-1) + fib(n-2)
    }
}

「原來如此!」兩人看著螢幕感嘆。

「還可以這樣寫喔」夏天又改了一個版本

class Solution {
    fun fib(n: Int): Int {
        return when (n) {
            0, 1 -> n
            else -> fib(n-1) + fib(n-2)
        }
    }
}

「哇⋯⋯好厲害⋯⋯」

「開始覺得有點難了嗎?今天先到這邊吧」夏天說完,拿起美式開始喝了起來。


上一篇
Day 09:字串的文字處理:7、9、1108
下一篇
Day 11:尾遞迴的觀念:70. Climbing Stairs
系列文
Kotlin 程式人:Leetcode 意外旅程30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
json_liang
iT邦研究生 4 級 ‧ 2022-09-16 22:14:19

跟夏天一樣 我也剛剛拿起了咖啡

我要留言

立即登入留言