算法-青蛙跳-斐波那契数列(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
©️2020 CSDN 皮肤主题: 成长之路 设计师: Amelia_0503 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值