Concept explainers
Maximum of list
Program plan:
- Import the package.
- Define the “Max()” function,
- Make simultaneous assignment to initialize the variables.
- Assign the values return from “len()”.
- Execute while loop when both “lst_1” and “lst_2” have more items,
- Check whether top of “lst_1” is larger,
- If it is “True”, copy that top value into current location in “lst_3”.
- Increment “s1” by “1”.
- Otherwise,
- Copy the top of “lst_2” into the current location in “lst_3”.
- Increment “s2” by “1”.
- Increment “s3” by “1” when element is added to “lst_3”.
- Check whether top of “lst_1” is larger,
- Execute the “while” loop to copy remaining elements from “lst_1”,
- Copy the element.
- Increment “s1” by “1”.
- Increment “s3” by “1”.
- Execute the "while" loop to copy remaining elements from “lst_2”,
- Copy the element.
- Increment “s2” by “1”.
- Increment “s3” by “1”.
- Define the function “merge_Sort()”,
- Assign the initial values for the variable.
- Check whether the number element is greater than 1,
- Split the list into two sub lists.
- Make simultaneous assignment to assign two sub lists using slicing.
- Make recursive calls to sort each sub list.
- Merge the sorted sub list into original list.
- Create empty list.
- Create for loop to iterate “100” times.
- Append the random value to the end of the list.
- Call the “merge_Sort()” function.
- Print the list.
This Python program is to demonstrate a recursive function “Max()” to find the largest number in a list where the largest number is the larger of the first item and the maximum of all the other items.
Explanation of Solution
Program:
File name: “conference.py”
#Import the package
from random import randrange
#Define the function
def Max(lst_1, lst_2, lst_3):
#Make simultaneous assignment
s1, s2, s3 = 0, 0 , 0
#Assign the values return from len()
n1, n2 = len(lst_1), len(lst_2)
'''Execute while loop when both lst_1 and lst_2 have more items'''
while s1 < n1 and s2 < n2:
#Check whether top of lst_1 is larger
if lst_1[s1] > lst_2[s2]:
'''Copy that top value into current location in lst_3'''
lst_3[s3] = lst_1[s1]
#Increment by "1"
s1 = s1 + 1
#Otherwise
else:
'''Copy the top of lst_2 into the current location in lst_3'''
lst_3[s3] = lst_2[s2]
#Increment by "1"
s2 = s2 + 1
#Increment by "1" when element added into lst_3
s3 = s3 + 1
'''Execute the "while" loop to copy remaining elements from lst_1'''
while s1 < n1:
#Copy the element
lst_3[s3] = lst_1[s1]
#Increment by "1"
s1 = s1 + 1
#Increment by "1"
s3 = s3 + 1
'''Execute the "while" loop to copy remaining elements from lst1_2'''
while s2 < n2:
#Copy the element
lst_3[s3] = lst_2[s2]
#Increment by "1"
s2 = s2 + 1
#Increment by "1"
s3 = s3 + 1
#Define the function
def merge_Sort(num):
#Assign the value
n = len(num)
'''Check whether the number element is greater than 1'''
if n > 1:
#Split the list into two sub lists
v = n // 2
'''Make simultaneous assignment to assign two sub lists using slicing'''
nums_1, nums_2 = num[:v], num[v:]
#Make recursive calls to sort each sub list
merge_Sort(nums_1)
merge_Sort(nums_2)
#Merge the sorted sub list into original list
Max(nums_1, nums_2, num)
#Create empty list
lst = []
#Create for loop
for n in range(100):
#Append the random value to the end of the list
lst.append(randrange(1, 1000))
#Call the function
merge_Sort(lst)
#Print the list
print(lst)
Output:
[996, 992, 975, 974, 956, 952, 947, 937, 921, 915, 902, 899, 891, 889, 886, 863, 863, 862, 856, 841, 837, 819, 808, 791, 760, 755, 754, 739, 736, 732, 685, 663, 638, 628, 623, 622, 612, 594, 569, 562, 552, 532, 531, 528, 527, 523, 492, 475, 468, 461, 452, 451, 444, 438, 431, 413, 405, 401, 375, 370, 358, 354, 350, 350, 347, 339, 325, 290, 286, 246, 227, 220, 215, 188, 185, 182, 168, 161, 149, 142, 141, 141, 139, 135, 115, 114, 112, 101, 96, 94, 94, 85, 84, 84, 80, 78, 70, 18, 13, 11]
>>>
Want to see more full solutions like this?
Chapter 13 Solutions
Python Programming: An Introduction to Computer Science, 3rd Ed.
- Write a function in a racket code that takes as input a list of elements and returns a list with elements and their position after. For example, if the input to the function is (list ’a ’b ’c) then it will return (list a 1 b 2 c 3). Make sure to use recursionarrow_forwardWrite a recursive function to find the minimum number in a list.arrow_forwardCode in python Use the fact that either the first element of a list is the largest or the largest is somewhere in the rest of the list to get a recursive function for computing the maximum element in a list. DO NOT use the max built in functionarrow_forward
- part 1. draw the recursive call tree for the following function when its called with a(7) int a (int n) { if (n % 4== 0) { return n+1;} else { return a(n-1) + a (n*4); } } part 2. what is the returning value?arrow_forwardWrite a recursive function in Java /** * Generate all combinations of the characters in the string s with length k. * * @param s a string. * @param k the length of the combinations * @return a list of all of the combinations of the strings in s. */arrow_forwardwrite a recursive function(in python) that computes the determinant of a (random)square matrix, represented as a list of lists of numeric values. use main(3517) to produce the same number a the value above.arrow_forward
- Write a recursive function that takes a number n and a list num_list as inputs, then determines which of the numbers in num_list are factors of n. When a factor is found, it should be printed to console. ( In python )arrow_forwardis it correct ? Write a recursive function that returns the nth number in a fibonacci sequence when n is passed to function. The fibonacci sequence is like 0,1,1,2,3,5,8,13...... Answer: #include <iostream> using namespace std; int getFibonacci(int n) { if (n == 0 || n == 1) return n; else return getFibonacci(n - 1) + getFibonacci(n - 2); } int main() { int n = 7; int result = getFibonacci(n); cout << result; }arrow_forwardpython code Write a recursive function such that, given a list of intergers (say v) and an integer value (say x), the function returns resulting subset if there is a subset of intergers in v that sum up to x. Otherwise the function returns an empty list; Also write a sample code that runs this function using an example list and value x, and state the expected resultarrow_forward
- Write a RECURSIVE function, without using any loops, that prints the contents of a matrix with 3 columns. The function should take the matrix and the number of rows as arguments. void print_matrix(int arr[][3], int num_rows);arrow_forwardWrite a recursive Racket function "update-if" that takes two functions, f and g, and a list xs as parameters and evaluates to a list. f will be a function that takes one parameter and evaluates true or false. g will be a function that takes one parameter and evaluates to some output. The result of update-if should be a list of items such that if x is in xs and (f x) is true, then (g x) is in the list. The output list's elements should keep the input list's items in the same relative order. For example (update-if even? add1 '(1 2 3 4)) should evaluate to '(3 5) because 2 and 4 make even? true and add1 turns 2 and 4 into 3 and 5.arrow_forward
- C++ Programming: From Problem Analysis to Program...Computer ScienceISBN:9781337102087Author:D. S. MalikPublisher:Cengage Learning