From 7a73162607544204032aa66cce755daf21edebda Mon Sep 17 00:00:00 2001 From: Matt Strapp Date: Tue, 24 May 2022 11:18:46 -0500 Subject: Graduate Signed-off-by: Matt Strapp --- ee1301/wk6/hw6_directory/strap012_HW6B.cpp | 35 ++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 ee1301/wk6/hw6_directory/strap012_HW6B.cpp (limited to 'ee1301/wk6/hw6_directory/strap012_HW6B.cpp') diff --git a/ee1301/wk6/hw6_directory/strap012_HW6B.cpp b/ee1301/wk6/hw6_directory/strap012_HW6B.cpp new file mode 100644 index 0000000..17a37fd --- /dev/null +++ b/ee1301/wk6/hw6_directory/strap012_HW6B.cpp @@ -0,0 +1,35 @@ +//Matthew Strapp +//EE1301 +//17 April 2019 +//HW 6B: Recursion and ff(x) +#include + +int ff(int x); +int main() { + int x, y; + do { + std::cout << "Please enter a value of x: "; + std::cin >> x; + } while (x<0); + std::cout << "Beginning calculation of ff(x)...\n"; + y = ff(x); + std::cout << "Calcuation complete, ff(x) = " << y << std::endl; +} + +// This function either returns 1 when x is one of two recrusive conditions depending on if x is even or odd. +int ff(int x) { + if (x > 1) { + if (x%2 == 0) { + // x is even + std::cout << "Calling ff(" << x/2 << ")\n"; + return x*ff(x/2); + } else { + // x is odd but not 1 + std::cout << "Calling ff(" << x-2 << ")\n"; + return x*ff(x-2); + } + } else { + // x is 1 (or 0) + return 1; + } +} -- cgit v1.2.3