美文网首页
6.递归(Recursion)

6.递归(Recursion)

作者: a_tomcat | 来源:发表于2017-12-07 21:42 被阅读0次

递归三部曲

1.define subproblem:定义子问题
2.find recursion rule: 找出递归规则
3.define base case: 定义退出条件

题目1

n级阶梯,每次走一步或两步,问最多有多少种走法?

    public long fibonacci(int k) {
        if (k == 0) return 0;
        if (k == 1 || k == 2) return 1; //base case
        return fibonacci(k-1)+fibonacci(k-2); //recursion rule
    }

这是斐波那契数列的一种解法,算法效率极低,时间复杂度是O(2^n),空间复杂度是O(n);
另一种非递归解法:

    public long fibonacci(int k) {
        if (k == 0) return 0;
        if (k == 1 || k == 2) return 1;
        long num1 = 1, num2 = 2, num = 0;
        for (int i = 3; i <= k; i++) {
            num = num1 + num2;
            num1 = num2;
            num2 = num;
        }
        return num;
    }

时间复杂度O(n),空间复杂度O(1)。

题目二

求a^b的结果.
subproblem: a^b= a^(b/2)* a^(b/2)

    public long power(int a, int b) {
        if (a == 0) return 0;
        if (b == 0) return 1;//base case
        //recursion rule:
        long half = power(a, b / 2);
        if (b % 2 == 0) {
            return half * half; 
        } else {
            return half * half * a;
        }
    }
6.png

时间复杂度O(lgb),空间复杂度O(lgb)

相关文章

  • 6.递归(Recursion)

    递归三部曲 1.define subproblem:定义子问题2.find recursion rule: 找出递...

  • 递归(recursion)

    基线条件(base case)&递归条件(recursive case) 递归条件基线条件 堆栈 调用栈 递归调用栈

  • 递归(recursion)

    如何设计递归算法 确定递归公式 确定边界条件 1. Fibonacci 2. 快速排序(Quick Sort) 3...

  • 递归(Recursion)

    递归(Recursion) [toc] 函数(方法)直接或间接调用自身。是一种常用的编程技巧 1 函数的调用过程 ...

  • recursion 递归

    刷leetcode发现很多题目涉及递归 Introduction to Java Programming, Com...

  • Recursion递归

    递归定义 编程的角度来看,程序调用自身的编程技巧称为递归(recursion)。本质上将原来的问题转化成更小的同一...

  • 2018-06-12

    算法(algorithm) 递归(recursion) 嵌套(nested) ...

  • Rust语言编程实例100题-028

    Rust语言编程实例100题-028 题目:递归练习。程序调用自身的编程技巧称为递归( recursion)。递归...

  • Rust语言编程实例100题-026

    Rust语言编程实例100题-026 题目:递归练习。程序调用自身的编程技巧称为递归( recursion)。递归...

  • Rust语言编程实例100题-027

    Rust语言编程实例100题-027 题目:递归练习。程序调用自身的编程技巧称为递归( recursion)。递归...

网友评论

      本文标题:6.递归(Recursion)

      本文链接:https://www.haomeiwen.com/subject/mrulixtx.html