I am trying to use a recursive function in Python. Even if I can change the value of a global value with a modifier, it re-changes when this modifier change.
Here is the code scheme;
array = [1,2,3]
middle_array = []
last_array = []
def recursive_array(in_array):
global last_array
global middle_array
for rank in range(0, len(in_array)):
if len(in_array) == 0:
last_array.append(middle_array)
return last_array
elif len(in_array) == 1:
middle_array.append(in_array[0])
last_array.append(middle_array)
return last_array
middle_array.append(in_array[rank])
bottom = rank -1
top = rank +2
if bottom <= 0:
bottom = 0
if top >= len(in_array):
top = len(in_array)
changable_array = in_array[top:]
recursive_array(changable_array)
last_array.append(middle_array)
middle_array.pop()
return last_array
First "recursive_array" cycle starts with [1,2,3] "in_array". "middle_array" take correct append() command and programme execute correct "changeable_array" as [3].
The first call of recursive comes with "in_array" as [3] so goes to "elif len(in_array) == 1:" command. Updating is done correctly. Now, middle_array is [1,3] and last_array is [1,3] then returning to add last append to last_array as [[1,3],[1,3]].
elif len(in_array) == 1:
middle_array.append(in_array[0])
last_array.append(middle_array)
After this, the command "middle_array.pop()" command is removing last element of the array. However, here is my problem; when the middle_array poped, "last_array" values also pops.
recursive_array(changable_array)
last_array.append(middle_array)
middle_array.pop()
Before pop;
last_array = [[1,3],[1,3]] middle_array = [1,3]
After pop;
last_array = [[1],[1]] middle_array = [1]
I want to pop the value in middle_array but keep the values in the last_array. Could you show me the path? Thanks for sparing time and your interest.