• C#算法之递推法


      1:斐波那契数列算法,如:1,1,2,3,5,8,13,21…… ,可以看到这里面的规律吧.就是每一项是前面相邻两项之和.求第N项。

           递归法:  

    1 public static int Fibonacci(int n) { 
    2                 //参数合法性验证 
    3                 if (n < 1)
    4                     Console.WriteLine("参数必须大于1!");
    5                 if (n == 1 || n == 2) 
    6                     return 1;
    7                 else 
    8                     return Fibonacci(n - 1) + Fibonacci(n - 2); 
    9         }     
      非递归方式 
     2   public static int fx(int n) { 
     3                 //参数合法性验证 
     4                 if (n < 1) 
     5                     Console.WriteLine("参数必须大于1!"); 
     6                 //n为1或2时候直接返回值 
     7                 if (n == 1 || n == 2) return 1; 
     8                 //n>2时候循环求值 
     9                 int Nn = 0; 
    10                 int N1 = 1; 
    11                 int N2 = 1; 
    12                 for (int i = 3; i <= n; i++) {
    13                     Nn = N1 + N2;
    14                     N1 = N2;
    15                     N2 = Nn; 
    16                 }
    17                 return Nn; 
    18         } 

        总结:递归的代码简单些,不过递归总体来说是以内存换时间,速度快,耗内存。

                 非递归比较省内存,速度稍微慢些。
        出题:1,5,11,27,65,157,。。。,N。求第N项是多少?斐波那契变式。
     
     1 public static int Fibonacci(int n) { 
     2                 //参数合法性验证 
     3                 if (n < 1)
     4                     Console.WriteLine("参数必须大于1!");
     5                 if (n == 1)
     6                     return 1;
     7                 else if (n == 2)
     8                     return 5;
     9                 else 
    10                     return Fibonacci(n - 1)*2 + Fibonacci(n - 2); 
    11         }

      有空大家可以思考其他方式。

  • 相关阅读:
    flask-scripts
    mysql相关
    day9:函数
    day8:文件操作
    day7:set和深浅copy
    day6:前两小节补充
    day5:字典dict
    day4:数据结构list
    piano class 13
    day3:数据类型 str
  • 原文地址:https://www.cnblogs.com/apsnet/p/2578643.html
Copyright © 2020-2023  润新知