Chapter 6: Problem 44
include
Short Answer
Step by step solution
Key Concepts
These are the key concepts you need to understand to accurately answer the question.
Chapter 6: Problem 44
include
These are the key concepts you need to understand to accurately answer the question.
All the tools & learning materials you need for study success - in one app.
Get started for freeIn this chapter, you studied functions that can be easily implemented both recursively and iteratively.. In this exercise, we present a problem whose recursive solution demonstrates the elegance of recursion, and whose iterative solution may not be as apparent. The Towers of Hanoi is one of the most famous classic problems every budding computer scientist must grapple with. Legend has it that in a temple in the Far East, priests are attempting to move a stack of golden disks from one diamond peg to another (Fig. 6.35). The initial stack has 64 disks threaded onto one peg and arranged from bottom to top by decreasing size. The priests are attempting to move the stack from one peg to another under the constraints that exactly one disk is moved at a time and at no time may a larger disk be placed above a smaller disk. Three pegs are provided, one being used for temporarily holding disks. Supposedly, the world will end when the priests complete their task, so there is little incentive for us to facilitate their efforts. Let’s assume that the priests are attempting to move the disks from peg 1 to peg 3. We wish to develop an algorithm that prints the precise sequence of peg-to-peg disk transfers. If we were to approach this problem with conventional methods, we would rapidly find ourselves hopelessly knotted up in managing the disks. Instead, attacking this problem with recursion in mind allows the steps to be simple. Moving n disks can be viewed in terms of moving only n – 1 disks (hence, the recursion), as follows: a) Move \(n-1\) disks from peg 1 to peg \(2,\) using peg 3 as a temporary holding area. b) Move the last disk (the largest) from peg 1 to peg 3. c) Move the \(n-1\) disks from peg 2 to peg \(3,\) using peg 1 as a temporary holding area. The process ends when the last task involves moving \(n=1\) disk (i.e., the base case). This task is accomplished by simply moving the disk, without the need for a temporary holding area. Write a program to solve the Towers of Hanoi problem. Use a recursive function with four parameters: a) The number of disks to be moved b) The peg on which these disks are initially threaded c) The peg to which this stack of disks is to be moved d) The peg to be used as a temporary holding area Display the precise instructions for moving the disks from the starting peg to the destination peg. To move a stack of three disks from peg 1 to peg 3, the program displays the following moves: \(1 \rightarrow 3\) (This means move one disk from peg 1 to peg \(3 .\) ) \\[ \begin{array}{l} 1 \rightarrow 2 \\ 3 \rightarrow 2 \\ 1 \rightarrow 3 \\ 2 \rightarrow 1 \\ 2 \rightarrow 3 \\ 1 \rightarrow 3 \end{array} \\]
Write a function that takes an integer value and returns the number with its digits reversed. For example, given the number 7631 , the function should return 1367
The use of computers in education is referred to as \(\mathrm{com}\) puter- assisted instruction \((\mathrm{CAI})\). Write a program that will help an elementary school student learn multiplication. Use the rand function to produce two positive one-digit integers. The program should then prompt the user with a question, such as How much is 6 times \(7 ?\) The student then inputs the answer. Next, the program checks the student's answer. If it's correct, display the message "Very good!" and ask another multiplication question. If the answer is wrong, display the message "No. Please try again." and let the student try the same question repeatedly until the student finally gets it right. A separate function should be used to generate each new question. This function should be called once when the application begins execution and each time the user answers the question correctly.
An application of function floor is rounding a value to the nearest integer. The statement y=floor( x + .5 ); rounds the number x to the nearest integer and assigns the result to y. Write a program that reads several numbers and uses the preceding statement to round each of these numbers to the nearest integer. For each number processed, print both the original number and the rounded number.
Write a complete \(\mathrm{C}_{+}+\) program with the two alternate functions specified below, each of which simply triples the variable count defined in main. Then compare and contrast the two approaches. These two functions are a) function tripleByvalue that passes a copy of count by value, triples the copy and returns the new value and a) function tripleByReference that passes count by reference via a reference parameter and triples the original value of count through its alias (i.e., the reference parameter).
What do you think about this solution?
We value your feedback to improve our textbook solutions.