算法-青蛙跳-斐波那契數列(OC、Swift、Python)

前言

我們在面試的過程中,經常會有一些面試官會問到算法,當然’青蛙跳🐸‘也是會被問到比較多的一種算法(筆者今年面試就被問過兩次,讓我在白板和白紙上手寫代碼,雖然我非常討厭手寫代碼,但是我還是用僞代碼寫出來了😂),青蛙跳也叫做斐波那契數列,我們在上學的時候也學過;一般面試題目如下:

👉題目:一隻青蛙一次可以條一級臺階也可以一次跳兩級臺階,如果有n級臺階青蛙有多少種跳法?🤔

分析

1級:1種跳法,跳法:1

2級:2種跳法,跳法:1 1,2

3級:3種跳法,跳法:1 1 1,2 1,1 2

4級:5種跳法,跳法:1 1 1 1,2 2,2 1 1 ,1 2 1,1 1 2

5級:8種跳法,跳法:1 1 1 1 1,1 2 2 ,2 1 2,2 2 1,2 1 1 1,1 2 1 1, 1 1 2 1,1 1 1 2

f(n>2)級:f(n - 1) + f(n - 2)

代碼

OC代碼

- (NSInteger)frogJump:(NSInteger)n{
    NSMutableArray *fib_list = [[NSMutableArray alloc] initWithArray:@[@(1), @(1)]];
    for (int i = 0; i< n - 1; i++) {
        NSNumber *value_0 = fib_list[1];
        NSNumber *value_1 = @([fib_list[0] integerValue] + [fib_list[1] integerValue]);
        
        fib_list[0] = value_0;
        fib_list[1] = value_1;
    }
    return [fib_list.lastObject integerValue];
}

Swift代碼

func frogJump(_ n: Int) -> Int {
        var fib_list:[Int] = NSMutableArray.init(array: [1, 1]) as! [Int]
        for _ in 0 ..< n - 1{
            let value_0 = fib_list[1]
            let value_1 = fib_list[0] + fib_list[1]
            
            fib_list[0] = value_0
            fib_list[1] = value_1
        }
        
        return fib_list.last!
    }

Python代碼

def frog_jump(n):
	fib_list = [1, 1]
	for i in range(n-1):
		fib_list[0], fib_list[1] = fib_list[1], fib_list[0] + fib_list[1]

	return fib_list[-1]

從上面幾種語言可以看出什麼?👻Python太簡潔了🤓

結束語

歡迎各位大神提出寶貴的意見和建議,也歡迎大家進羣交流365152048!

CSDN博客 https://zfj1128.blog.csdn.net
GITEE主頁 https://gitee.com/zfj1128
GITHUB主頁 https://github.com/zfjsyqk
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章