Shylock Hg

My own blog powered by Hugo and Ivy.

Linear And Tree Recursive

2018-06-11


linear recursive

linear recursive procedure : once recursive call.

  1. linear recursive procedure and process:
int factorial(int n){

	if(0 > n)
		return -1;

	if(1==n)
		return 1;

	return (n * factorial(n-1));
}
  1. linear recursive procedure and iteration process
int factorial_iter(int product, int n){

	if(0 > n)
		return -1;

	if(1 == n || 0 == n)
		return product;

	return factorial_iter(product * n, n-1);
}

#define factorial(n) factorial_iter(1, n)

tree recursive

tree recursive procedure : more than once recursive call.

  1. tree recursive procedure and process
int fibonacci(int n){

	if(0 > n)
		return -1;

	if(0 == n)
		return 0;
	if(1 == n)
		return 1;

	return (fibonacci(n-2) + fibonacci(n-1));
}
  1. tree recursive procedure and linear iteration process
int fibonacci_iter(int a, int b, int n){
	if(0 > n)
		return -1;

	if(1 == n)
		return a;

	if(0 == n)
		return b;

	return fibonacci_iter(a+b, a, n-1);
}

#define fibonacci(n) fibonacci_iter(1, 0, n)