Write a recursive function called collatz that takes in a single positive integer argument n and returns the list of numbers in the collatz sequence from n to 1, inclusive. For example, suppose your initial number was 5. Then the collatz sequence would be the following: The initial number is 5. 5 is odd, so the next number is 5*3 + 1 = 16 16 is even, so the next number is 16//2 = 8 8 is even, so the next number is 8//2 = 4 4 is even, so the next number is 4//2 = 2 2 is even, so the next number is 2//2 = 1 We have reached 1, so the sequence is complete, and the function would return the list [5,16,8,4,2,1]

C++ Programming: From Problem Analysis to Program Design
8th Edition
ISBN:9781337102087
Author:D. S. Malik
Publisher:D. S. Malik
Chapter8: Arrays And Strings
Section: Chapter Questions
Problem 21PE
icon
Related questions
Question

In python

The Collatz conjecture
(https://en.wikipedia.org/wiki/Collatz_conjecture) is an
unproven mathematical rule that says the following:
Take any positive integer n. If n is even, divide it by 2 to
get n/2 (use integer division so that you don't end up
with floating point numbers). If n is odd, multiply it by 3
and add 1 to obtain 3n + 1. Repeat the process
indefinitely, and eventually you will reach 1.
Write a recursive function called collatz that takes in
a single positive integer argument n and returns the list of
numbers in the collatz sequence from n to 1, inclusive.
For example, suppose your initial number was 5. Then
the collatz sequence would be the following:
The initial number is 5.
5 is odd, so the next number is 5*3 + 1 = 16
16 is even, so the next number is 16//2 = 8
8 is even, so the next number is 8//2 = 4
4 is even, so the next number is 4//2 = 2
2 is even, so the next number is 2//2 = 1
We have reached 1, so the sequence is complete, and the
function would return the list [5,16,8,4,2,1]
Hints:
You may assume that your function will only be
called with positive integers.
• This function returns a list, so both your base case
and your recursive case(s) need to return a list.
You will need to add elements to the front of the
list in this problem.
• Using list methods like .append or .insert can be
tricky in conjunction with recursion, so it might
be better to try using list concatenation using the
operator.
● For example, note that:
collatz (5)
[5]+[16,8,4,2,1]
Constraints:
=
[5]+collatz (16)
>>> collatz (1)
[1]
Examples:
>>> collatz (5)
[5, 16, 8, 4, 2, 1]
=
=
The collatz function must be implemented
using recursion. Do not use any loop constructs
(while or for), or any other strategy that does
not involve recursion.
[5,16,8,4,2,1]
>>> collatz (123)
[123, 370, 185, 556, 278, 139, 418, 209,
628, 314, 157, 472, 236, 118, 59, 178, 89,
268, 134, 67, 202, 101, 304, 152, 76, 38,
19, 58, 29, 88, 44, 22, 11, 34, 17, 52,
26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]
Transcribed Image Text:The Collatz conjecture (https://en.wikipedia.org/wiki/Collatz_conjecture) is an unproven mathematical rule that says the following: Take any positive integer n. If n is even, divide it by 2 to get n/2 (use integer division so that you don't end up with floating point numbers). If n is odd, multiply it by 3 and add 1 to obtain 3n + 1. Repeat the process indefinitely, and eventually you will reach 1. Write a recursive function called collatz that takes in a single positive integer argument n and returns the list of numbers in the collatz sequence from n to 1, inclusive. For example, suppose your initial number was 5. Then the collatz sequence would be the following: The initial number is 5. 5 is odd, so the next number is 5*3 + 1 = 16 16 is even, so the next number is 16//2 = 8 8 is even, so the next number is 8//2 = 4 4 is even, so the next number is 4//2 = 2 2 is even, so the next number is 2//2 = 1 We have reached 1, so the sequence is complete, and the function would return the list [5,16,8,4,2,1] Hints: You may assume that your function will only be called with positive integers. • This function returns a list, so both your base case and your recursive case(s) need to return a list. You will need to add elements to the front of the list in this problem. • Using list methods like .append or .insert can be tricky in conjunction with recursion, so it might be better to try using list concatenation using the operator. ● For example, note that: collatz (5) [5]+[16,8,4,2,1] Constraints: = [5]+collatz (16) >>> collatz (1) [1] Examples: >>> collatz (5) [5, 16, 8, 4, 2, 1] = = The collatz function must be implemented using recursion. Do not use any loop constructs (while or for), or any other strategy that does not involve recursion. [5,16,8,4,2,1] >>> collatz (123) [123, 370, 185, 556, 278, 139, 418, 209, 628, 314, 157, 472, 236, 118, 59, 178, 89, 268, 134, 67, 202, 101, 304, 152, 76, 38, 19, 58, 29, 88, 44, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1]
Expert Solution
trending now

Trending now

This is a popular solution!

steps

Step by step

Solved in 3 steps with 1 images

Blurred answer
Knowledge Booster
Fibonacci algorithm
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
  • SEE MORE QUESTIONS
Recommended textbooks for you
C++ Programming: From Problem Analysis to Program…
C++ Programming: From Problem Analysis to Program…
Computer Science
ISBN:
9781337102087
Author:
D. S. Malik
Publisher:
Cengage Learning
C++ for Engineers and Scientists
C++ for Engineers and Scientists
Computer Science
ISBN:
9781133187844
Author:
Bronson, Gary J.
Publisher:
Course Technology Ptr