## EE140 Intro to Programming Concepts for Engineers Lab 7

### computer science

##### Description

EE140 Intro to Programming Concepts for Engineers Lab 7

Please turn in the assignment electronically, as usual.

Please turn in a tar archive of a directory called assignment_7; turn in code and executables for

the remaining problems named question1.txt, question2.c, question2.out, etc. Make a compressed

tarball of the directory, call it

LastnameFirstname_lab7_XXXX.tar.gz

and copy it to my dropbox. Questions 1 and 4 require only a .txt file (written paragraph answer);

Questions 2 and 3 require running code (.c and .out files)

1.

EXAMPLE: 2

For a positive integer number n, its factorial (n!) is given by:

n! = 1 (for n=1)

n! = n (n-1)! (for n&gt;1)

Write a program to calculate n! using a recursive function.

int factorial (int n); // function prototype of factorial()

If n is 1, factorial (1) returns 1

If n &gt; 1, factorial (n) returns n * factorial (n-1)

Continue recursion until n is 1

#include&lt;stdio.h&gt;

//a recursive factorial function

int factorial( int n )

{

if (n &lt;= 1)

return 1;

else

return( n * factorial( n -1));

}

int main( void)

{

int n, result ;

printf(&quot;Enter Value for n: &quot;);

scanf(&quot;%d&quot;, &amp;n); //enter value n

result = factorial (n); //call factorial() to compute n!

printf(&quot;%d !=%d\n&quot;, n, result);

return 0;

}

EXAMPLE: 3

#include&lt;stdio.h&gt;

// a non-recursive (iterative) factorial function

int factorial(int n )

{

int i, prod = 1;

for (i=1; i&lt;=n; i++)

prod = prod * i;

return prod;

}

int main( void)

{

int n;

printf(&quot;Enter Value for n: &quot;);

scanf(&quot;%d&quot;, &amp;n); //enter value n

printf(&quot;%d !=%d\n&quot;, n, factorial(n));

return 0;

}

Review Example 2 and Example 3 and compare the recursive function implementation

with the non-recursive function implementation. For this question, just write a short

paragraph explaining how the two implementations are different. (saying “one’s

recursive and the other isn’t” doesn’t get you any points)

2. Write a recursive function to determine and return the sum of the first n positive integers.

Read the value of n from the keyboard. (For example, for n=100 the sum is 5050)

3. The greatest common divisor of integers x and y is the largest integer that evenly divides

both x and y. Write a recursive function gcd() that returns the greatest common divisor of

x and y. The gcd of x and y is defined recursively as follows: if y is equal to 0, then gcd

(x, y) is x; otherwise gcd (x, y) is gcd (y, x%y) where % is the remainder operator.

(question 4 is on the next page)

4. What does the following program do (by observation)? To be more precise, what is the

underlying meaning of the program?

#include &lt;stdio.h&gt;

int mystery(int a, int b); // function prototype

int main(void)

{

int x; //first integer

int y; //second integer

printf(&quot;Enter two integers: &quot;);

scanf(&quot;%d%d&quot;, &amp;x, &amp;y);

printf(&quot;The result is %d\n&quot;, mystery(x, y));

return 0;

}

/*Parameter b must be a positive integer to prevent infinite recursion*/

int mystery( int a, int b)

{

if (b == 1)

return a;

else

return a + mystery (a, b-1);