zoukankan      html  css  js  c++  java
  • 递归算法之阶乘代码实现与非递归实现

      求一个自然数n的阶乘,也非常适合用递归的方式实现。当然,所有的递归都可以用非递归的方式来实现,只是在代码结构上将显得啰嗦和复杂。现代编译器对递归函数的调用开销已经大幅优化,因此,对于类似汉诺塔等问题的求解,用递归实现非常简洁明了,并且易于阅读和理解。

      本文给出自然数n的阶乘的递归与非递归求解算法代码实现。语言为dart语言。

     1 int factorial(int n) {
     2   if (n < 0) throw StateError('n cannot be < 0!');
     3   return n == 0 ? 1 : n * factorial(n - 1);
     4 }
     5 
     6 int factorialNonrecursive(int n) {
     7   if (n < 0) throw StateError('n cannot be < 0!');
     8   var result = 1;
     9   while (n > 0) result *= n--;
    10   return result;
    11 }
  • 相关阅读:
    排序简介
    排序集锦
    排序图解
    UVA 11809
    uva1588kickdown
    C++中输入输出的重定向
    uva1587BOX
    uva 10340 All in All
    uva 1368 DNA Consensus String
    彻底理解MapReduce shuffle过程原理
  • 原文地址:https://www.cnblogs.com/outerspace/p/10827089.html
Copyright © 2011-2022 走看看