zoukankan      html  css  js  c++  java
  • [算法][递归]求阶乘

    这道题是最简单的递归问题,这里探讨两个问题:
    递归和非递归的转换
    任何一个递归过程都可以改为非递归,递归的描述逻辑是从后往前的,f(n)依赖f(n-1)的结果,f(n-1)依赖f(n-2)的结果...以此类推,但是非递归的逻辑是从前往后的,递归改非递归,就是要往前找到不依赖任何项的第一项,再改成(一般是这个思路)for()循环的形式

    递归和动态规划的关系
    其实动态规划就是把每一次递归结果都记录下来的递归,也是用空间换时间,f(n)项只依赖f(n-1)项或前面的有限项;而递归每次是不记录解的

    package basic_class_07;
    
    //求n阶乘的结果
    public class Code_01_Factorial {
    	public static long getFactorial1(int n) {
    		if (n == 1) {
    			return 1L;
    		}
    		return (long) n * getFactorial1(n - 1);
    	}
    
    	public static long getFactorial2(int n) {
    		long result = 1L;
    		for (int i = 1; i <= n; i++) {
    			result *= i;
    		}
    		return result;
    	}
    
    	public static void main(String[] args) {
    		int n = 5;
    		System.out.println(getFactorial1(n));
    		System.out.println(getFactorial2(n));
    	}
    
    }
    
    
  • 相关阅读:
    奇偶数排序
    买房子
    首字母大写
    学分绩点
    加减乘除
    最简真分数
    Hdu 1058 Humble Numbers
    Hdu 1032 The 3n + 1 problem
    Hdu 1040 As Easy As A+B
    Hdu 1025 Constructing Roads In JGShining's Kingdom
  • 原文地址:https://www.cnblogs.com/kristse/p/12361206.html
Copyright © 2011-2022 走看看