关于递归
来源:互联网 发布: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;}}