#include using namespace std; //get user input: // int get_input() { // int input; // cout << "Enter an int: "; // cin >> input; // if (!valid(input)) // //get the user input again // get_input(); // return input; // } int fact_iter (int n) { if (n == 0) return 1; int fact = n; for (int i = 1; i < n; ++i) { fact = fact * i; } return fact; } int fact_recur(int n) { //base case: if (n == 0) return 1; return n * fact_recur(n-1); } int pwr_iter (int base, int exp){ int result = 1; for (int i = 0; i < exp; ++i) { result = result * base; } return result; } //Assuming both 'base' and 'exp' are >= 0 int pwr_recur (int base, int exp){ //FIXME: //base case: if (exp == 0) return 1; //recursive calls: // base^exp = base * base^(exp-1); // i.e., 2^10 = 2 * 2^9 // = 2 * (2 * 2^8) return base * pwr_recur(base, exp-1); } int main(int argc, char const *argv[]) { cout << fact_iter(10) << endl; cout << fact_recur(10) << endl; cout << pwr_iter (2, 16) << endl; cout << pwr_recur (2, 16) << endl; return 0; }