In human written computer programs, loops and recursion are very important structures. Many real-world applications require recursion and loops. Loops and recursion can also be achieved by using genetic programming (GP). There has been a lot of work on GP for loops but not much on recursion. Our recent initial work on GP for recursion has shown that GP can be used to solve recursion problems, based on which this work develops two new GP methods that can solve a wider range of problems without decreasing the performance. The two new methods are tested on symbolic regression problems, binary classification problems, and Artificial Ant problems. They are compared to methods using loops, traditional GP, and the methods developed in our previous work. The results show that the new methods have improved the accuracy and increased the range of symbolic regression problems that the methods can perfectly solve, and improved the performance on two of the Artificial Ant problems. The new methods can also solve classification problems, and have better performance than loops on many of these tasks. This is the first work using recursion for classification problems, and is the first design of a generic recursive method for GP.