递归算法之基础练习

拜拜、爱过 提交于 2020-02-11 23:54:40

递归的定义:
一个函数自己直接或间接调用自己。

我们只要把下面两个基本的问题搞明白就差不多理解了递归的含义。
这里需要注意的是我们写递归的时候一定要有个递归出口、不然会导致栈溢出异常

/**
 * 递归的复习与巩固
 * @author qiu
 *  定义:一个函数自己直接或间接调用自己。
 */
public class Recursion {
          
	public static void main(String[] args) {
		//求阶乘    n!的问题可以看成n*(n-1)!
		int num= factorial(10);
		System.out.println(num);	
		//求1+2+3....+n的和
		int sum = factorial1(5);
		System.out.println(sum);	
		
	}
   
	public static int  factorial(int N){     //递归函数
		 if(N==1||N==0) {                   //递归结束出口
			 return 1;
		 }
		 else if(N<0) {                   //递归结束出口
			 return -1;
		 }
		 else {
		 return N*factorial(N-1);
		  }
	}
	
 	
   private static int factorial1(int N) {
       if(N==1) {                         //递归结束出口
    	   return 1;
       }
	   return N+factorial1(N-1);
}
}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!