Chapter 2 Recursion The Mirrors A Recursive Valued
- Slides: 42
Chapter 2 Recursion: The Mirrors
A Recursive Valued Method: n ! (n 階乘) • Problem – 計算出 n! (以函式 factorial(n) 表示) • factorial(n) 的列舉式定義(可用迴圈完成, 請自己寫寫看) factorial(n) = n * (n-1) * (n-2) * … * 1 for any integer n > 0 factorial(0) = 1 © 2005 Pearson Addison-Wesley. All rights reserved 7
A Recursive Valued Method: The Factorial of n • factorial(n) 的遞迴定義 factorial(n) = 1 if n = 0 = n * factorial(n-1) if n > 0 © 2005 Pearson Addison-Wesley. All rights reserved 8
A Recursive Valued Method: The Factorial of n • 遞迴關係 – 一個新項目的值是利用之前項目的值來產生 的數學公式 – Example factorial(n) = n * [(n-1) * (n-2) * … * 1] = n * factorial(n-1) © 2005 Pearson Addison-Wesley. All rights reserved 9
範例 © 2005 Pearson Addison-Wesley. All rights reserved 11
A Recursive Valued Method: The Factorial of n Figure 2. 3 A box © 2005 Pearson Addison-Wesley. All rights reserved 12
A Recursive Valued Method: The Factorial of n © 2005 Pearson Addison-Wesley. All rights reserved 13
A Recursive Valued Method: The Factorial of n © 2005 Pearson Addison-Wesley. All rights reserved 14
A Recursive Valued Method: The Factorial of n © 2005 Pearson Addison-Wesley. All rights reserved 15
A Recursive Valued Method: The Factorial of n © 2005 Pearson Addison-Wesley. All rights reserved 16
Multiplying Rabbits (The Fibonacci Sequence) • Problem – 在第 n 個月共有幾對兔子? • 遞迴關係 rabbit(n) = rabbit(n-1) + rabbit(n-2) © 2005 Pearson Addison-Wesley. All rights reserved 19
Multiplying Rabbits (The Fibonacci Sequence) Figure 2. 10 Recursive solution to the rabbit problem © 2005 Pearson Addison-Wesley. All rights reserved 20
Multiplying Rabbits (The Fibonacci Sequence) © 2005 Pearson Addison-Wesley. All rights reserved 21
Multiplying Rabbits (The Fibonacci Sequence) • 基本狀況 – rabbit(2), rabbit(1) • 遞迴定義 rabbit(n) = 1 if n is 1 or 2 = rabbit(n-1) + rabbit(n-2) if n > 2 • 費氏序列 – 以 rabbit(1), rabbit(2), rabbit(3), … 這些值形 成的序列 © 2005 Pearson Addison-Wesley. All rights reserved 22
Mr. Spock’s Dilemma • 基本狀況 (Choosing k out of n Things) – 自 k 個物件取出 k 個只有一種取法 c(k, k) = 1 – 什麼都不取的取法也只有一種 c(n, 0) = 1 – 無法取出比 n 更多個物件 c(n, k) = 0 if k > n © 2005 Pearson Addison-Wesley. All rights reserved 26
Mr. Spock’s Dilemma (Choosing k out of n Things) • 遞迴定義 c(n, k) = 1 1 0 c(n-1, k-1) + c(n-1, k) © 2005 Pearson Addison-Wesley. All rights reserved if k = 0 if k = n if k > n if 0 < k < n 27
Mr. Spock’s Dilemma (Choosing k out of n Things) Figure 2. 12 The recursive calls that c(4, 2) generates © 2005 Pearson Addison-Wesley. All rights reserved 28
Searching an Array: 找到陣列最大值 • 遞迴解法 if (an. Array 只有一個項目) { max. Array(an. Array) 就是該項目 } else if (an. Array 有不只一個項目) { max. Array(an. Array) 是以下兩數之最大值: max. Array( an. Array 的前面一半陣列) 及 max. Array( an. Array 的後面一半陣列) } // end if © 2005 Pearson Addison-Wesley. All rights reserved 29
Searching an Array: Finding the Largest Item in an Array Figure 2. 13 Recursive solution to the largest-item problem © 2005 Pearson Addison-Wesley. All rights reserved 30
Finding the kth Smallest Item in an Array Figure 2. 18 A partition about a pivot © 2005 Pearson Addison-Wesley. All rights reserved 32
Finding the kth Smallest Item in an Array • Let: k. Small(k, an. Array, first, last) = an. Array[first. . last] 中第 k 個最 小項目 © 2005 Pearson Addison-Wesley. All rights reserved 33
Finding the kth Smallest Item in an Array • 解答(假設陣列已排序): k. Small(k, an. Array, first, last) = k. Small(k, an. Array, first, pivot. Index-1) if k < pivot. Index – first + 1 = p if k = pivot. Index – first + 1 = k. Small(k-(pivot. Index-first+1), an. Array, pivot. Index+1, last) if k > pivot. Index – first + 1 © 2005 Pearson Addison-Wesley. All rights reserved 34
Organizing Data: The Towers of Hanoi (河內塔) Figure 2. 19 a and b a) The initial state; b) move n - 1 disks from A to C © 2005 Pearson Addison-Wesley. All rights reserved 35
The Towers of Hanoi Figure 2. 19 c and d c) move one disk from A to B; d) move n - 1 disks from C to B © 2005 Pearson Addison-Wesley. All rights reserved 36
The Towers of Hanoi • 擬程式碼 solve. Towers(count, source, destination, spare) if (count is 1) { 直接將盤子由 source 移至 destination } else { solve. Towers(count-1, source, spare, destination) solve. Towers(1, source, destination, spare) solve. Towers(count-1, spare, destination, source) } //end if © 2005 Pearson Addison-Wesley. All rights reserved 37
Summary • Recursion solves a problem by solving a smaller problem of the same type • Four questions: – How can you define the problem in terms of a smaller problem of the same type? – How does each recursive call diminish the size of the problem? – What instance of the problem can serve as the base case? – As the problem size diminishes, will you reach this base case? © 2005 Pearson Addison-Wesley. All rights reserved 40
Summary • A recursive call’s postcondition can be assumed to be true if its precondition is true • The box trace can be used to trace the actions of a recursive method • Recursion can be used to solve problems whose iterative solutions are difficult to conceptualize © 2005 Pearson Addison-Wesley. All rights reserved 41
Summary • Some recursive solutions are much less efficient than a corresponding iterative solution due to their inherently inefficient algorithms and the overhead of method calls • If you can easily, clearly, and efficiently solve a problem by using iteration, you should do so © 2005 Pearson Addison-Wesley. All rights reserved 42
- Single valued and multi valued attributes
- To understand recursion you must understand recursion
- Left factoring algorithm
- Non recursive algorithm
- Socially valued resources
- Multi valued dependencies
- Multi valued dependency
- Communication and employability skills for it
- Chapter 8 thinking language and intelligence
- Which of these are valued as a special zero-growth case
- Find the domain of the vector valued function
- Real valued function
- Chapter 17 reflection and mirrors
- Hình ảnh bộ gõ cơ thể búng tay
- Slidetodoc
- Bổ thể
- Tỉ lệ cơ thể trẻ em
- Voi kéo gỗ như thế nào
- Tư thế worm breton là gì
- Hát lên người ơi
- Kể tên các môn thể thao
- Thế nào là hệ số cao nhất
- Các châu lục và đại dương trên thế giới
- Công của trọng lực
- Trời xanh đây là của chúng ta thể thơ
- Mật thư tọa độ 5x5
- Phép trừ bù
- Phản ứng thế ankan
- Các châu lục và đại dương trên thế giới
- Thể thơ truyền thống
- Quá trình desamine hóa có thể tạo ra
- Một số thể thơ truyền thống
- Cái miệng xinh xinh thế chỉ nói điều hay thôi
- Vẽ hình chiếu vuông góc của vật thể sau
- Thế nào là sự mỏi cơ
- đặc điểm cơ thể của người tối cổ
- V. c c
- Vẽ hình chiếu đứng bằng cạnh của vật thể
- Phối cảnh
- Thẻ vin
- đại từ thay thế
- điện thế nghỉ
- Tư thế ngồi viết