for
while
do
int factorial(int n)
n
int factorial(int n) { return 1 * 2 * 3 * 4 * ... * n; }
2! == 1 *2 ( ) 3! == 1*2 *3 ( ) 4! == 1*2*3 *4 ( ) 5! == 1*2*3*4 *5 ( )
int f1 = factorial_r(1); System.out.println("1! = " + f1);
factorial_r()
factorial_rr()
/** * can calculate "2!". * @author */ factorial_rr(int x) similar to factorial_r() except: else { int factorial_sub_case = factorial_r(x - 1); return factorial_sub_case * x; } int f2 = factorial_rr(2); System.out.println("2! = " + f2);
factorial_rrr(3)
| | | | +-------------------------------------------+ | factorial_r(n:1) | | return 1 | +-------------------------------------------+ | factorial_rr(x:2) | | factorial_sub_case = factorial_r(1) | | return factorial_sub_case * x | +-------------------------------------------+ | factorial_rrr(y:3) | | factorial_sub_case = factorial_rr(2) | | return factorial_sub_case * y | +-------------------------------------------+ | main(...) | | f3 = factorial_rrr(3) | +-------------------------------------------+
factorial_sub_case
factorial_r...()
factorial_rrr...()
factorial_rrr()
| | | | +-------------------------------------------+ | factorial_rrr(n:1) | | return 1 | +-------------------------------------------+ | factorial_rrr(n:2) | | factorial_sub_case = factorial_rrr(1) | | return factorial_sub_case * n | +-------------------------------------------+ | factorial_rrr(n:3) | | factorial_sub_case = factorial_rrr(2) | | return factorial_sub_case * n | +-------------------------------------------+ | main(...) | | f3 = factorial_rrr(3) | +-------------------------------------------+
qualifiers ret._type recursive_method(parameters) { if( base_case ) return base_value; // else return recursive formula; }
target
index
array[index]
factorial(n)
array[]
index - 1
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+ | | | | | | | | | | | | ? | X | X | +---+---+---+---+---+---+---+---+---+---+---+---+---+---+ ^ ^ ^ | | | / / / --------------- / index:
if ( )
search(array, i, target) = i if array[i] is target if i < 0 (out of range) search(array, i-1, target) otherwise
main()
String[] data = { "To", "iterate", "is", "human", "to", "recurse,", "divine" }; // : L. Peter Deutsch, who worked on PostScript, // which preceded PDF. int i_human = search(data, data.length - 1, "human"); System.out.println("i_human: " + i_human); // int i_robot = search(data, data1.length - 1, "robot"); System.out.println("i_robot: " + i_robot); //