关于递归

来源:互联网 发布:knn算法python实现 编辑:程序博客网 时间:2024/05/18 09:02
package com.test;public class Demo3 {/** * @param 递归·· */public static void main(String[] args) {          System.out.println(recursiveSum(10));          System.out.println(recursiveFactorial(5));          System.out.println(recursiveFibonacci(6));//求费波纳茨数列第6项                    System.out.println(fun(8));//求费波纳茨数列第8项---21}/** * 求1+2+3+...+n的和 */public static int recursiveSum(int n){if(n==1)return 1;/** * n + (n-1)+recursiveSum(n-2) * n + (n-1)+(n-2)+recursiveSum(n-3) * ... */return n+recursiveSum(n-1);}/** * 求n! */public static int recursiveFactorial(int n){if(n==1)return 1;/** * n * (n-1)*recursiveFactorial(n-2) * n * (n-1)*(n-2)*recursiveFactorial(n-3) * ... */return n*recursiveFactorial(n-1);}/** * 求费波纳茨数列  1 1 2 3 5 8... */public static int recursiveFibonacci(int n){if(n==1||n==2)return 1;/**           f6    f5                f4    f4      f3       f3   f2   f3  f2  f2 f1     f2 f1    f2 f1  */return recursiveFibonacci(n-1)+recursiveFibonacci(n-2);}/** * 非递归求费波纳茨数列 */public static long fun(int n){if(n==1||n==2){return 1;}long f1 = 1l;long f2 = 1l;long result =0l;for(int i=0;i<n-2;i++){result = f1+f2;f1 = f2;f2 =result;}return result;}}

原创粉丝点击