diff options
Diffstat (limited to 'ee1301/wk6/hw6_directory/strap012_HW6B.cpp')
-rw-r--r-- | ee1301/wk6/hw6_directory/strap012_HW6B.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/ee1301/wk6/hw6_directory/strap012_HW6B.cpp b/ee1301/wk6/hw6_directory/strap012_HW6B.cpp new file mode 100644 index 0000000..5b15ca0 --- /dev/null +++ b/ee1301/wk6/hw6_directory/strap012_HW6B.cpp @@ -0,0 +1,29 @@ +#include <iostream> + +int ff(int x); + +int main() { + int value = -1; + do { + std::cout << "Please enter a value of x: "; + std::cin >> value; + } while (value<0); + std::cout << "Beginning calculation of ff(x)...\n"; + int ffx = ff(value); + std::cout << "Calcuation complete, ff(x) = " << ffx << std::endl; +} + +int ff(int x) { + if (x > 1) { + if (x%2 == 0) { + std::cout << "Calling ff(" << x/2 << ")\n"; + return x*ff(x/2); + } else { + std::cout << "Calling ff(" << x-2 << ")\n"; + return x*ff(x-2); + } + } else { + std::cout << "Returning from ff(" << x << ") = 1\n"; + return 1; + } +} |