Respuesta :
Answer / Explanation:
Let us define what a Recursion process is before we go ahead to constructing:
Recursion method is a process of solving problems where the solution focus on resolutions to minor or smaller instances of the same problem.
Thus:
public class RecursionP2 {
//constructor
ArrayList<Integer> classList = new ArrayList <Integer> (0);
RecursionP2 (int [] list) {
for(int i = 0; i < list.length; i++) {
classList.add(list [i]);
}
}
public int[] toEvenRevList(int[] list) {
if (list.length == 0) {
i = false;
return new int[0];
}
i = !i;
boolean j = i;
int[] temp = toEvenRevList(Arrays.copyOfRange(list, 1, list.length));
if (j) {
temp = Arrays.copyOf(temp, temp.length + 1);
temp[temp.length - 1] = list[0];
}
return temp;
}
public int[] toEvenRevList() {
return toEvenRevList(ArrayList);
// returns last element
public int retPenultimate(int[] list) {
if (list.length == 1)
return list[0];
return retPenultimate(Arrays.copyOfRange(list, 1, list.length));
}
public int[] getList() {
return ArrayList;
}
On running this, the output below is generated:
RecursionP2(int[] list) {
ArrayList = new int [list.length];
for (int i = 0; i < list.length; i++)
ArrayList[i] = list[i];
}
Consequentially, the reverseList method as public int[] reverseList(int[] list) {
if (list.length == 0)
return new int[0];
int[] value = reverseList(Arrays.copyOfRange(list, 1, list.length));
value = Arrays.copyOf(value, value.length);
value [value.length - 1] = list[0];
return value;
}
Answer:
C++.
Explanation:
#include <iostream>
#include <iterator>
using namespace std;
/////////////////////////////////////////////////
class RecursionP2 {
int array_size, count;
int array_list[8];
public:
RecursionP2(int array_list[], int array_size) {
this->array_size = array_size;
count = 0;
for (int i = 0; i < array_size; i++) {
this->array_list[i] = array_list[i];
}
}
/////////////////////////////////////////////
void reverseList(int array_list[], int size) {
if (size <= 1)
return;
else {
int temp;
temp = array_list[0];
array_list[0] = array_list[size-1];
array_list[size-1] = temp;
return reverseList(array_list+1, size-2);
}
}
void reverseList() {
this->reverseList(array_list, array_size);
cout<<"{";
for (int i = 0; i < array_size-1; i++) {
cout<<array_list[i]<<", ";
}
cout<<array_list[array_size-1]<<"}";
}
/////////////////////////////////////////////
void oddList(int array_list[], int index) {
if (index >= array_size)
return;
else {
int temp = array_list[index];
array_list[index] = array_list[count];
array_list[count] = temp;
count = count + 1;
return oddList(array_list, index+2);
}
}
void oddList() {
this->oddList(array_list, 1);
cout<<"{";
for (int i = 0; i < count-1; i++) {
cout<<array_list[i]<<", ";
}
cout<<array_list[count-1]<<"}";
}
/////////////////////////////////////////////
void evenRevList(int array_list[], int index) {
if (index >= array_size)
return;
else {
int temp = array_list[index];
array_list[index] = array_list[count];
array_list[count] = temp;
count = count + 1;
return oddList(array_list, index+2);
}
}
void evenRevList() {
this->evenRevList(array_list, 0);
this->reverseList(array_list, count);
cout<<"{";
for (int i = 0; i < count-1; i++) {
cout<<array_list[i]<<", ";
}
cout<<array_list[count-1]<<"}";
}
/////////////////////////////////////////////
int retPenultimate(int array_list[], int size) {
if (size < 1) {
return -1;
}
else if (size == 1) {
return array_list[0];
}
else {
return retPenultimate(array_list+1, size-1);
}
}
/////////////////////////////////////////////
int* getList() {
return array_list;
}
};
/////////////////////////////////////////////////
int main() {
int array_list[] = {2, 4, 6, 8, 10, 12 ,4, 1};
int array_size = distance(begin(array_list), end(array_list));
RecursionP2 recursionp2_1(array_list, array_size);
/////////////////////////////////////////////
//recursionp2_1.reverseList();
//recursionp2_1.oddList();
//recursionp2_1.evenRevList();
cout<<recursionp2_1.retPenultimate(array_list, array_size);
/////////////////////////////////////////////
return 0;
}