- /**Demonstration of three
types of recursion
- *
- * @author TK Rogers
- * @version 10-16-08
- */
- public class RecursiveMultiplication {
-
public static void main ( ) {
-
System.out.println ( "Note that \"a\" remains constant while \"b\"
-
decreases by 1 in each iteration." ) ;
-
System.out.println ( "4 x 2 = " + multiply ( 4, 2 ) +
"\n" ) ;
-
// ^ creates a new line.
-
System.out.println ( "Note that \"name\" remains constant while \"n\"
-
decreases by 1 in each iteration." ) ;
- hi
( "Bob" , 3 ) ;
-
System.out.println ( "\nNote that \"x\" decreases by 1 in each iteration."
) ;
-
System.out.println ( " Total = "
+
addFractions ( 3 ) ) ;
- }
-
- /**
Purpose:
Method returns a * b
- * Preconditions:
two integers
- *
Postconditions: returns a * b.
- */
-
public static int multiply ( int a ,
int b ) {
-
System.out.println ( "a = " + a +
", b = " + b ) ;
- if
(b <= 1) { //stops the recursion
-
return a ;
- }
-
return a + multiply ( a, b - 1 ) ;
- }
- /**Purpose: Method causes "hello " + name to be output on n lines
- *
Preconditions: a string representing a name to output, an integer
- * representing the number of times the sting is output.
- *
Postconditions: none.*/
-
static int hi ( String name,
int n ) {
- if
( n == 0 ) { //stops the recursion
-
System.out.println ( "saying hello to " + name +
" has stopped, n = " + n ) ;
-
return 0;
- }
-
System.out.println ( "hello " + name +
", n = " + n ) ;
-
return hi ( name, n - 1 ) ;
- }
-
- /**Purpose:
Method returns the series 1/1 + 1/2 + 1/3 + ... + 1/x
- * Preconditions:
an integer x for the above series
- *
Postconditions: returns the value for the above series. */
-
static double addFractions ( int x ) {
-
System.out.println ( "x = " + x +
", 1.0 / x = " + 1.0 / x) ;
- if
( x <= 1 ) return 1.0 ; //stops the recursion
-
else return 1.0 / x + addFractions ( x - 1 ) ;
-
-
// If x = 3, the recursion runs as follows:
- // return 1.0 / 3 +
addFractions ( x-1 ) ;
- // return 1.0 / 2 +
addFractions ( x-1 ) ;
- // return 1.0 / 1;
-
// At this point, the computer adds
- //
the 3 bold print values from
-
// bottom to top.
- }
- }