SlideShare a Scribd company logo
1 of 33
Download to read offline
Top-down &
 Bottom-up
  郭至軒(KuoE0)
 KuoE0.tw@gmail.com
      KuoE0.ch
Attribution-ShareAlike 3.0 Unported
           (CC BY-SA 3.0)

  http://creativecommons.org/licenses/by-sa/3.0/

              Latest update: Feb 27, 2013
Top-down
將大問題化為小問題,再回溯求解。
Top-down
將大問題化為小問題,再回溯求解。
Top-down
將大問題化為小問題,再回溯求解。
Bottom-up
由已知解決小問題,逐步推移至大問題。
Bottom-up
由已知解決小問題,逐步推移至大問題。
Recursion

利用同樣的方法不斷的細分問題或        近答案。




       易有太極,是生兩儀。兩儀生四象,四象生八卦。《易傳》
Fibonacci Sequence
fib(5)
Fibonacci Sequence
fib(5)


fib(4)        fib(3)
Fibonacci Sequence
fib(5)


fib(4)           fib(3)


fib(3)   fib(2)
Fibonacci Sequence
fib(5)


fib(4)                   fib(3)


fib(3)           fib(2)


fib(2)   fib(1)
Fibonacci Sequence
fib(5)


fib(4)                   fib(3)


fib(3)           fib(2)


fib(2)   fib(1)


fib(1)   fib(0)
Fibonacci Sequence
fib(5)


fib(4)                   fib(3)


fib(3)           fib(2)


fib(2)
 1      fib(1)


fib(1)
 1      fib(0)
         0
Fibonacci Sequence
fib(5)


fib(4)                   fib(3)


fib(3)
 2              fib(2)


fib(2)
 1      fib(1)
         1


fib(1)
 1      fib(0)
         0
Fibonacci Sequence
fib(5)


fib(4)                           fib(3)


fib(3)
 2              fib(2)


fib(2)
 1      fib(1)
         1      fib(1)   fib(0)


fib(1)
 1      fib(0)
         0
Fibonacci Sequence
fib(5)


fib(4)
 3                              fib(3)


fib(3)
 2              fib(2)
                 1


fib(2)
 1      fib(1)
         1      fib(1)
                 1      fib(0)
                         0


fib(1)
 1      fib(0)
         0
Fibonacci Sequence
fib(5)


fib(4)
 3                              fib(3)


fib(3)
 2              fib(2)
                 1              fib(2)   fib(1)



fib(2)
 1      fib(1)
         1      fib(1)
                 1      fib(0)
                         0


fib(1)
 1      fib(0)
         0
Fibonacci Sequence
fib(5)


fib(4)
 3                              fib(3)


fib(3)
 2              fib(2)
                 1              fib(2)   fib(1)



fib(2)
 1      fib(1)
         1      fib(1)
                 1      fib(0)
                         0      fib(1)   fib(0)


fib(1)
 1      fib(0)
         0
Fibonacci Sequence
fib(5)


fib(4)
 3                              fib(3)


fib(3)
 2              fib(2)
                 1              fib(2)
                                 1      fib(1)



fib(2)
 1      fib(1)
         1      fib(1)
                 1      fib(0)
                         0      fib(1)
                                 1      fib(0)
                                         0


fib(1)
 1      fib(0)
         0
Fibonacci Sequence
fib(5)
 5


fib(4)
 3                              fib(3)
                                 2


fib(3)
 2              fib(2)
                 1              fib(2)
                                 1      fib(1)
                                         1



fib(2)
 1      fib(1)
         1      fib(1)
                 1      fib(0)
                         0      fib(1)
                                 1      fib(0)
                                         0


fib(1)
 1      fib(0)
         0
int fib( int x ) {
  if ( x <= 0 )
    return 0;
  if ( x == 1 )
    return 1;
  return fib( x - 1 ) + fib( x - 2 );
}

int main() {
  int ret = fib( 10 );
  return 0;
}
Iteration

不斷的利用已知,持續的求出結果以       近答案。




           道生一,一生二,二生三,三生萬物。《老子》
Fibonacci Sequence

    0



    1
Fibonacci Sequence

    0   1



    1
Fibonacci Sequence

    0   1



    1   2
Fibonacci Sequence

    0   1   3



    1   2
Fibonacci Sequence

    0   1   3



    1   2   5
int main() {
  int f0 = 0, f1 = 1, f2;

    for ( int i = 0; i < 10; ++i ) {
      f2 = f0 + f1;
      f0 = f1, f1 = f2;
    }

    return 0;
}
遞迴只應天上有,凡人應當用迴圈。
Practice Now
 POJ 1664 - 放苹果
reference


• http://www.csie.ntnu.edu.tw/~u91029/
  IterativeRecursive.html
Thank You for Your
    Listening.

More Related Content

More from Chih-Hsuan Kuo

Ownership System in Rust
Ownership System in RustOwnership System in Rust
Ownership System in RustChih-Hsuan Kuo
 
在開始工作以前,我以為我會寫扣。
在開始工作以前,我以為我會寫扣。在開始工作以前,我以為我會寫扣。
在開始工作以前,我以為我會寫扣。Chih-Hsuan Kuo
 
Effective Modern C++ - Item 35 & 36
Effective Modern C++ - Item 35 & 36Effective Modern C++ - Item 35 & 36
Effective Modern C++ - Item 35 & 36Chih-Hsuan Kuo
 
Use C++ to Manipulate mozSettings in Gecko
Use C++ to Manipulate mozSettings in GeckoUse C++ to Manipulate mozSettings in Gecko
Use C++ to Manipulate mozSettings in GeckoChih-Hsuan Kuo
 
Pocket Authentication with OAuth on Firefox OS
Pocket Authentication with OAuth on Firefox OSPocket Authentication with OAuth on Firefox OS
Pocket Authentication with OAuth on Firefox OSChih-Hsuan Kuo
 
Protocol handler in Gecko
Protocol handler in GeckoProtocol handler in Gecko
Protocol handler in GeckoChih-Hsuan Kuo
 
面試面試面試,因為很重要所以要說三次!
面試面試面試,因為很重要所以要說三次!面試面試面試,因為很重要所以要說三次!
面試面試面試,因為很重要所以要說三次!Chih-Hsuan Kuo
 
Windows 真的不好用...
Windows 真的不好用...Windows 真的不好用...
Windows 真的不好用...Chih-Hsuan Kuo
 
[ACM-ICPC] Tree Isomorphism
[ACM-ICPC] Tree Isomorphism[ACM-ICPC] Tree Isomorphism
[ACM-ICPC] Tree IsomorphismChih-Hsuan Kuo
 
[ACM-ICPC] Dinic's Algorithm
[ACM-ICPC] Dinic's Algorithm[ACM-ICPC] Dinic's Algorithm
[ACM-ICPC] Dinic's AlgorithmChih-Hsuan Kuo
 
[ACM-ICPC] Disjoint Set
[ACM-ICPC] Disjoint Set[ACM-ICPC] Disjoint Set
[ACM-ICPC] Disjoint SetChih-Hsuan Kuo
 

More from Chih-Hsuan Kuo (20)

Ownership System in Rust
Ownership System in RustOwnership System in Rust
Ownership System in Rust
 
在開始工作以前,我以為我會寫扣。
在開始工作以前,我以為我會寫扣。在開始工作以前,我以為我會寫扣。
在開始工作以前,我以為我會寫扣。
 
Effective Modern C++ - Item 35 & 36
Effective Modern C++ - Item 35 & 36Effective Modern C++ - Item 35 & 36
Effective Modern C++ - Item 35 & 36
 
Use C++ to Manipulate mozSettings in Gecko
Use C++ to Manipulate mozSettings in GeckoUse C++ to Manipulate mozSettings in Gecko
Use C++ to Manipulate mozSettings in Gecko
 
Pocket Authentication with OAuth on Firefox OS
Pocket Authentication with OAuth on Firefox OSPocket Authentication with OAuth on Firefox OS
Pocket Authentication with OAuth on Firefox OS
 
Necko walkthrough
Necko walkthroughNecko walkthrough
Necko walkthrough
 
Protocol handler in Gecko
Protocol handler in GeckoProtocol handler in Gecko
Protocol handler in Gecko
 
面試面試面試,因為很重要所以要說三次!
面試面試面試,因為很重要所以要說三次!面試面試面試,因為很重要所以要說三次!
面試面試面試,因為很重要所以要說三次!
 
應徵軟體工程師
應徵軟體工程師應徵軟體工程師
應徵軟體工程師
 
面試心得分享
面試心得分享面試心得分享
面試心得分享
 
Windows 真的不好用...
Windows 真的不好用...Windows 真的不好用...
Windows 真的不好用...
 
Python @Wheel Lab
Python @Wheel LabPython @Wheel Lab
Python @Wheel Lab
 
Introduction to VP8
Introduction to VP8Introduction to VP8
Introduction to VP8
 
Python @NCKU CSIE
Python @NCKU CSIEPython @NCKU CSIE
Python @NCKU CSIE
 
[ACM-ICPC] Tree Isomorphism
[ACM-ICPC] Tree Isomorphism[ACM-ICPC] Tree Isomorphism
[ACM-ICPC] Tree Isomorphism
 
[ACM-ICPC] Dinic's Algorithm
[ACM-ICPC] Dinic's Algorithm[ACM-ICPC] Dinic's Algorithm
[ACM-ICPC] Dinic's Algorithm
 
[ACM-ICPC] Disjoint Set
[ACM-ICPC] Disjoint Set[ACM-ICPC] Disjoint Set
[ACM-ICPC] Disjoint Set
 
[ACM-ICPC] Traversal
[ACM-ICPC] Traversal[ACM-ICPC] Traversal
[ACM-ICPC] Traversal
 
[ACM-ICPC] UVa-10245
[ACM-ICPC] UVa-10245[ACM-ICPC] UVa-10245
[ACM-ICPC] UVa-10245
 
[ACM-ICPC] Sort
[ACM-ICPC] Sort[ACM-ICPC] Sort
[ACM-ICPC] Sort
 

[ACM-ICPC] Top-down & Bottom-up