/*
Module: twoton.c
Author: Yana
What:
-----
This program computes 2^n in four recursive ways.
Input: an integer n.
Output: 2^n.
How:
----
Algorithm: Four recursive algorithms - See functions.
notice the different complexity of the 4 versions.
*/
#include<stdio.h>
int Version1(int n);
int Version2(int n);
int Version3(int n);
int Version4(int n);
int main(){
-
int n; /* input number. */
- printf( "Enter a number: ") ;
- scanf("%d", &n);
- printf("Version 1 = %d, Version 2 = %d, Version 3 = %d, Version 4 = %d\n", Version1(n), Version2(n), Version3(n), Version4(n));
- return 0;
}
/* Algorithm: 2^n = 2^(n-1) + 2^(n-1) */
int Version1(int n){
-
- if (n == 0)
- else
- return (Version1(n-1) + Version1(n-1));
}
/* Algorithm: 2^n = 2 * 2^(n-1). */
int Version2(int n){
}
/* Algorithm: 2^n = 2^(n/2) * 2^(n/2) if n is even.
2^n = 2 * 2^(n/2) * 2^(n/2) if n is odd. */
int Version3(int n){
-
- int result; /* result up to a factor of two. */
- if (n == 0)
- result = Version3(n/2) * Version3(n/2);
- if (n % 2 == 0)
- else
}
/* Algorithm: 2^n = (2^(n/2))^2 if n is even.
2^n = 2*(2^(n/2))^2 if n is odd. */
int Version4(int n){
-
- int temp; /* almost sqrt of result. */
-
if (n == 0)
- temp = Version4(n/2);
- if (n % 2 == 0)
- else
}