CoSc 450: Programming Paradigms 02 Recursion and Induction
���������������������� ��� ��������� ������������ �� � �� � ���� ������ � CoSc 450: Programming Paradigms 02 ���� ������ � � ����������� � �� Recursive definition of factorial ������������������������������������������������������������������������������������� ����������������������� � �� n = 0 , 1 n ! = n · ( n − 1 ) ! �� n > 0 . ����� � ���������� ���������������� � ������������������� �������������������� �� ������������������������������ � ��������������� ��������������������� � ������������������� �������������������� � ������������������������������ � ��������������������������������������������������������������� ���������������������� ������������������������������������������������������������� ������������ ������������ ������������������������������������������������������������������������� ����� ��������������������������������������� ������ �� �� � �� � ���� ������ � ���� ������ ������ � � �� � ��� � �� �������������������� �������� ������� ��������������������������������������������������������� ����� ����������� ����� � ���������� ���������������� � ��������������������������������� �� ���������������� ����������������������� ������������������������������������������� ����������������������������������������������������������� ���������������������������� ������������������������������������������ ���������� ����� ����������������� ������������������������������ ��������������� ���������� �������� ������� ��������� � � ����� ������������������������������������� �������� ���������� ����
CoSc 450: Programming Paradigms 02 Squaring a number recursively without multiplication.
CoSc 450: Programming Paradigms 02 Squaring a number recursively without multiplication. n 2 ( n − 1) 2 Compute given
CoSc 450: Programming Paradigms 02 Squaring a number recursively without multiplication. n 2 ( n − 1) 2 Compute given ( n − 1) 2 = n 2 − 2 n + 1 n 2 = ( n − 1) 2 + 2 n − 1
CoSc 450: Programming Paradigms 02 Squaring a number recursively without multiplication. n 2 ( n − 1) 2 Compute given ( n − 1) 2 = n 2 − 2 n + 1 n 2 = ( n − 1) 2 + 2 n − 1
CoSc 450: Programming Paradigms 02 Squaring a number recursively without multiplication. n 2 ( n − 1) 2 Compute given ( n − 1) 2 = n 2 − 2 n + 1 n 2 = ( n − 1) 2 + 2 n − 1
CoSc 450: Programming Paradigms 02 Squaring a number recursively without multiplication. n 2 ( n − 1) 2 Compute given ( n − 1) 2 = n 2 − 2 n + 1 n 2 = ( n − 1) 2 + 2 n − 1 Program this in Scheme
CoSc 450: Programming Paradigms 02 Prove square is correct. (define square (lambda (n) (if (= n 0) 0 (+ (square (- n 1)) (- (+ n n) 1)))))
CoSc 450: Programming Paradigms 02 Prove square is correct. (define square (lambda (n) (if (= n 0) 0 (+ (square (- n 1)) (- (+ n n) 1))))) The correctness proof of a recursive function is by mathematical induction.
CoSc 450: Programming Paradigms 02 Mathematical induction: • Base case corresponds to base case in code. • Inductive case corresponds to recursive call in code. • Use code inspection to convert from Scheme to traditional infix notation in both cases.
CoSc 450: Programming Paradigms 02 Mathematical induction: • Base case corresponds to base case in code. • Inductive case corresponds to recursive call in code. • Use code inspection to convert from Scheme to traditional infix notation in both cases.
CoSc 450: Programming Paradigms 02 Mathematical induction: • Base case corresponds to base case in code. • Inductive case corresponds to recursive call in code. • Use code inspection to convert from Scheme to traditional infix notation in both cases.
CoSc 450: Programming Paradigms 02 Mathematical induction: • Base case corresponds to base case in code. • Inductive case corresponds to recursive call in code. • Use code inspection to convert from Scheme to traditional infix notation in both cases.
CoSc 450: Programming Paradigms 02 (define square (lambda (n) (if (= n 0) 0 (+ (square (- n 1)) (- (+ n n) 1))))) Base case Code inspection: (square 0) returns 0. 0 2 = 0 Math: Therefore, correct in base case.
CoSc 450: Programming Paradigms 02 (define square (lambda (n) (if (= n 0) 0 (+ (square (- n 1)) (- (+ n n) 1))))) Base case Code inspection: (square 0) returns 0. 0 2 = 0 Math: Therefore, correct in base case.
CoSc 450: Programming Paradigms 02 (define square (lambda (n) (if (= n 0) 0 (+ (square (- n 1)) (- (+ n n) 1))))) Base case Code inspection: (square 0) returns 0. 0 2 = 0 Math: Therefore, correct in base case.
CoSc 450: Programming Paradigms 02 (define square (lambda (n) (if (= n 0) 0 (+ (square (- n 1)) (- (+ n n) 1))))) Base case Code inspection: (square 0) returns 0. 0 2 = 0 Math: Therefore, correct in base case.
CoSc 450: Programming Paradigms 02 (define square (lambda (n) (if (= n 0) 0 (+ (square (- n 1)) (- (+ n n) 1))))) Inductive case Prove that n 2 (square n) terminates with value assuming that ( n − 1) 2 (square (- n 1)) terminates with value as the inductive hypothesis.
CoSc 450: Programming Paradigms 02 (define square (lambda (n) (if (= n 0) 0 (+ (square (- n 1)) (- (+ n n) 1))))) Inductive case Prove that n 2 (square n) terminates with value assuming that ( n − 1) 2 (square (- n 1)) terminates with value as the inductive hypothesis.
CoSc 450: Programming Paradigms 02 (define square (lambda (n) (if (= n 0) 0 (+ (square (- n 1)) (- (+ n n) 1))))) Inductive case Prove that n 2 (square n) terminates with value assuming that ( n − 1) 2 (square (- n 1)) terminates with value as the inductive hypothesis.
CoSc 450: Programming Paradigms 02 (define square (lambda (n) (if (= n 0) 0 (+ (square (- n 1)) � Inductive case (- (+ n n) 1))))) ����������������� ������� �� = ⟨ ��������������� ⟩ ������� �� � ��� +( n + n ) − 1 = ⟨ �������������������� ⟩ ( n − 1 ) 2 +( n + n ) − 1 = ⟨ ���� ⟩ n 2 − 2 n + 1 + 2 n − 1 = ⟨ ���� ⟩ n 2
CoSc 450: Programming Paradigms 02 (define square (lambda (n) (if (= n 0) 0 (+ (square (- n 1)) � Inductive case (- (+ n n) 1))))) ����������������� ������� �� = ⟨ ��������������� ⟩ ������� �� � ��� +( n + n ) − 1 = ⟨ �������������������� ⟩ ( n − 1 ) 2 +( n + n ) − 1 = ⟨ ���� ⟩ n 2 − 2 n + 1 + 2 n − 1 = ⟨ ���� ⟩ n 2
Recommend
More recommend