procedure BubbleSort (A,n): if (n $\le$ 1) return ;if the array length is 1 or 0, return else { i=0 ;iterator starting at first ele. j=n-1 ;iterator starting at last ele. while (i<j) { ;check all elements if A[i] > A[i+1] { ;compare each pair swap(A[i],A[i+1]);swap if needed } else i++ } BubbleSort (A[0:n-2], n-1) ;sort lower partition return } Note that to make any recursive function work correctly, you need to carefully determine what information needs to be stored (likely on the stack) before a recursive call is made. What you need to store is the current "context" or the current working values needed to pick-up and complete the function once the recursive call returns, keeping in mind that you need to correctly return to your main program with the last return. Procedure Part 1: Implement a recursive function that will read a value from memory using a given address, and the value does not equal zero, add that value to the stack, increment the address pointer by 4, and pass that address to a recursive call of your function to grab the next element in memory. Once a 0 is found, your function should pop the value, and return. The pseudo code of this is as follows: procedure part1(addr) : if (mem[addr]==0) return else {