Рекурсия является своего рода математически закодированной математической индукции .
Специализация: Когда 1:00 создание п == (в коде не обязательно является частным случаем п == 1, может п == 0 или п == NULL), обобщенный процесс иногда влияют на особые обстоятельства. Поэтому при написании кода должно попытаться закончить первый обобщенный логический процесс снова рассмотрит специализацию.
Обобщение: Для п-1 установлена зависимость, для п также установленная (в письменной программе) математик п-1 удовлетворяет соотношение п подтверждение также выполнено.
Для каштана:
Следующие два рекурсивная функция суммирования является правильным, но разные
// обобщенный другой результат в различных специализированных Int SUM ( ИНТ n-) { // найти натуральное число и 1 ~ п IF (п - == 1. ) Возвращение 1. ; // конкретизированы возвращение SUM (N . 1 ) + n-; /// обобщен }
INT SUM1 ( ИНТ n-) { // найти натуральное число и 1 ~ п IF (п - == 1. ) возвращение 1. ; // специализироваться IF (п - == 2 ) возвращение 3. ; возвращение SUM (N - 2 ) + п-N . 1; // обобщение }
java代码如下:
节点类定义:
package interview; public class Node { private final int value; private Node next; public Node(int value) { super(); this.value = value; this.next = null; } public Node getNext() { return next; } public void setNext(Node next) { this.next = next; } public int getValue() { return value; } public static void printList(Node head){ while(head!=null){ System.out.print(head.getValue()); System.out.print(" "); head=head.getNext(); }System.out.println(); } }
主函数:
package interview; import java.util.List; import java.util.Arrays; public class list { /** * Creats a Linked List * * @param data the data to creat the list * @return head of the linked list.The return linked list * ends with last node with getNext() == null. */ public Node creatList(List<Integer> data){ if(data.isEmpty()){ return null; } Node firstNode = new Node(data.get(0)); Node headofSublist = creatList(data.subList(1,data.size())); firstNode.setNext(headofSublist); return firstNode; } public static void main(String[] args) { // TODO Auto-generated method stub list creator = new list(); //Node.printList(new ArrayList<>()); Node.printList(creator.creatList(Arrays.asList(1))); Node.printList(creator.creatList(Arrays.asList(1,2,3,4,5))); } }