functions in c++...c++ functions functions in c++ are similar to methods in java: piece of code that...

91
Functions in C++

Upload: others

Post on 20-May-2020

26 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Functions in C++

Page 2: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Section Signups

● Section signups open tomorrow at 5PM and close Sunday at 5PM.

● Sign up for section at

http://cs198.stanford.edu/section● Link available on the CS106B course

website.

Page 3: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Getting Started with C++

Page 4: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

C++ Functions

● Functions in C++ are similar to methods in Java:● Piece of code that performs some task.● Can accept parameters.● Can return a value.

● Syntax similar to Java:

return-type function-name(parameters) {

/* … function body … */

}Note: no public or private.

Page 5: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

The main Function

● A C++ program begins execution in a function called main with the following signature:

int main() {

/* … code to execute … */

}● By convention, main should return 0 unless

the program encounters an error.

Page 6: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

A Simple C++ Program

Page 7: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

What Went Wrong?

Page 8: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

One-Pass Compilation

● Unlike some languages like Java or C#,C++ has a one-pass compiler.

● If a function has not yet been declared when you try to use it, you will get a compiler error.

● To fix this, you can do one of two things:● Reorder the functions in your source files so

that everything is declared before it is used.● Use a function prototype to tell the compiler

to expect a function later on.

Page 9: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Function Prototypes

● A function prototype is a declaration that tells the C++ compiler about an upcoming function.

● Syntax:

return-type function-name(parameters);

● A function can be used if the compiler has seen either the function itself or its prototype.

Page 10: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Getting Input from the User

● In C++, we use cout to display text.

● We can also use cin to receive input.

● For technical reasons, we've written some functions for you that do input.● Take CS106L to see why!

● The library "simpio.h" contains methods for reading input:

int getInteger(string prompt = "");

double getReal(string prompt = "");

string getLine(string prompt = "");

Page 11: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Getting Input from the User

● In C++, we use cout to display text.

● We can also use cin to receive input.

● For technical reasons, we've written some functions for you that do input.● Take CS106L to see why!

● The library "simpio.h" contains methods for reading input:

int getInteger(string prompt = "");

double getReal(string prompt = "");

string getLine(string prompt = "");

These functions have default arguments. If you don't specify a prompt, it will use the empty string.

These functions have default arguments. If you don't specify a prompt, it will use the empty string.

Page 12: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Factorials

● The number n factorial, denoted n!, is

n × (n – 1) × … × 3 × 2 × 1

● For example:● 3! = 3 × 2 × 1 = 6.● 5! = 5 × 4 × 3 × 2 × 1 = 120● 0! = 1 (by definition)

● Factorials show up everywhere:● Taylor series.● Counting ways to shuffle a deck of cards.● Determining how quickly computers can sort values (more

on that later this quarter).

Page 13: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Digital Roots

● The digital root of a number can be found as follows:● If the number is just one digit, then it's its own

digital root.● If the number is multiple digits, add up all the digits

and repeat.

● For example:● 5 has digital root 5.● 42 → 4 + 2 = 6, so 42 has digital root 6.● 137 → 1 + 3 + 7 = 11, 11 → 1 + 1 = 2, so 137 has

digital root 2.

Page 14: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Working One Digit at a Time

1 2 5 8

1 2 5 8

1258 % 10

Page 15: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Working One Digit at a Time

1 2 5 8

1 2 5 8

1258 / 10 1258 % 10

Page 16: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Thinking Recursively

Page 17: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Factorial Revisited

5! = 45 × 23 1× × ×

Page 18: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Factorial Revisited

5! = 45 × 23 1× × ×

Page 19: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Factorial Revisited

5! = 45 × 23 1× × ×

4!

Page 20: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Factorial Revisited

5! = 4!5 ×

Page 21: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Factorial Revisited

5! = 4!5 ×

Page 22: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Factorial Revisited

5! = 4!5 ×4! = 4 23 1× × ×

Page 23: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Factorial Revisited

5! = 4!5 ×4! = 4 23 1× × ×

Page 24: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Factorial Revisited

5! = 4!5 ×4! = 4 23 1× × ×

3!

Page 25: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Factorial Revisited

5! = 4!5 ×4! = 4 3!×

Page 26: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Factorial Revisited

5! = 4!5 ×4! = 4 3!×

Page 27: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Factorial Revisited

5! = 4!5 ×4! = 4 3!×3! = 3 × 2 1×

Page 28: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Factorial Revisited

5! = 4!5 ×4! = 4 3!×3! = 3 × 2 1×

Page 29: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Factorial Revisited

5! = 4!5 ×4! = 4 3!×3! = 3 × 2 1×

2!

Page 30: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Factorial Revisited

5! = 4!5 ×4! = 4 3!×3! = 3 × 2!

Page 31: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Factorial Revisited

5! = 4!5 ×4! = 4 3!×3! = 2!3 ×

Page 32: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Factorial Revisited

5! = 4!5 ×4! = 4 3!×3! = 2!3 ×2! = 1!2 ×

Page 33: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Factorial Revisited

5! = 4!5 ×4! = 4 3!×3! = 2!3 ×2! = 1!2 ×1! = 0!1 ×

Page 34: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Factorial Revisited

5! = 4!5 ×4! = 4 3!×3! = 2!3 ×2! = 1!2 ×1! = 0!1 ×0! = 1

Page 35: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Another View of Factorials

n! = 1 if n = 0n × (n – 1)! otherwise

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

Page 36: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Another View of Factorials

n! = 1 if n = 0n × (n – 1)! otherwise

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

Page 37: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

Page 38: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

Page 39: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

Page 40: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

Page 41: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

Page 42: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

Page 43: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

Page 44: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

Page 45: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

Page 46: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

Page 47: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 3int n

Page 48: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 3int n

Page 49: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 3int n

Page 50: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 3int n

Page 51: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 3int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 2int n

Page 52: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 3int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 2int n

Page 53: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 3int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 2int n

Page 54: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 3int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 2int n

Page 55: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 3int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 2int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 1int n

Page 56: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 3int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 2int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 1int n

Page 57: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 3int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 2int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 1int n

Page 58: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 3int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 2int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 1int n

Page 59: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 3int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 2int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 1int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 0int n

Page 60: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 3int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 2int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 1int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 0int n

Page 61: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 3int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 2int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 1int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 0int n

Page 62: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 3int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 2int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 1int n

Page 63: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 3int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 2int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 1int n

1

Page 64: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 3int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 2int n

Page 65: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 3int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 2int n

1

Page 66: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 3int n

Page 67: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 3int n

2

Page 68: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

Page 69: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 4int n

6

Page 70: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

Page 71: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }}

int factorial(int n) { if (n == 0) { return 1; } else { return n * factorial(n - 1); }} 5int n

24

Page 72: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

Page 73: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

120int n

Page 74: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Recursion in Actionint main() { int n = factorial(5); cout << "5! = " << n << endl;}

int main() { int n = factorial(5); cout << "5! = " << n << endl;}

120int n

Page 75: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Thinking Recursively

● Solving a problem with recursion requires two steps.

● First, determine how to solve the problem for simple cases.● This is called the base case.

● Second, determine how to break down larger cases into smaller instances.● This is called the recursive decomposition.

Page 76: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Thinking Recursively

if (problem is sufficiently simple) {

Directly solve the problem.

Return the solution.

} else {

Split the problem up into one or more smaller problems with the same structure as the original.

Solve each of those smaller problems.

Combine the results to get the overall solution.

Return the overall solution.

}

Page 77: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Summing Up Digits

● One way to compute the sum of the digits of a number is shown here:

int sumOfDigits(int n) {

int result = 0;

while (n != 0) {

result += n % 10;

n /= 10;

}

return result;

}

● How would we rewrite this function recursively?

Page 78: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Summing Up Digits

1 2 5 8

1 2 5 8

The sum of these digits of this number...

The sum of these digits of this number...

is equal to the sum of the digits of this

number...

is equal to the sum of the digits of this

number...

Page 79: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Summing Up Digits

1 2 5 8

1 2 5 8

The sum of these digits of this number...

The sum of these digits of this number...

is equal to the sum of the digits of this

number...

is equal to the sum of the digits of this

number...plus this number.plus this number.

Page 80: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Summing Up Digits

● A recursive implementation of sumOfDigits is shown here:

int sumOfDigits(int n) {

if (n < 10) {

return n;

} else {

return (n % 10) + sumOfDigits(n / 10);

}

}

● Notice the structure:● If the problem is sufficiently simple, solve it directly.● Otherwise, reduce it to a smaller instance and solve that

one.

Page 81: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Computing Digital Roots

● One way of computing a digital root is shown here:

int digitalRoot(int n) {

while (n >= 10) {

n = sumOfDigits(n);

}

return n;

}● How might we rewrite this function recursively?

Page 82: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Digital Roots

Page 83: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Digital Roots

9 2 5 8The digital root of

Page 84: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Digital Roots

9 2 5 8The digital root of is the same as

Page 85: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Digital Roots

9 2 5 8The digital root of

The digital root of

is the same as

9 2 5 8+ + +

Page 86: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Digital Roots

9 2 5 8The digital root of

The digital root of

is the same as

2 4

Page 87: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Digital Roots

9 2 5 8The digital root of

The digital root of

is the same as

2 4 which is the same as

Page 88: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Digital Roots

9 2 5 8The digital root of

The digital root of

is the same as

2 4 which is the same as

The digital root of 2 4+

Page 89: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Digital Roots

9 2 5 8The digital root of

The digital root of

is the same as

2 4 which is the same as

The digital root of 6

Page 90: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Computing Digital Roots

● Here is one recursive solution:

int digitalRoot(int n) {

if (n < 10) {

return n;

} else {

return digitalRoot(sumOfDigits(n));

}

}

● Again, notice the structure:● Check if the problem is simple enough to solve directly.● If not, solve a smaller version of the same problem.

Page 91: Functions in C++...C++ Functions Functions in C++ are similar to methods in Java: Piece of code that performs some task. Can accept parameters. Can return a value. Syntax similar to

Next Time

● Strings and Streams● Representing and manipulating text.● File I/O in C++.