zoukankan      html  css  js  c++  java
  • 一、.Net基础【1.8】递归

    1.什么是递归?

    方法自己调用自己。两个条件:递推方法;递归的终止条件:什么情况下不再递归。

    2.案例1:阶乘

         //阶乘:5!=5*4*3*2*1。6!=6*5*4*3*2*1。f(n)=n*f(n-1)
            static int JieCheng(int n)
            {
                //把栈内存填满了
                //return n * jiecheng(n - 1);
                if (n < 0)
                {
                    Console.WriteLine("n不能是负数");
                }
                if (n == 0)
                {
                    return 1;
                }
                return n * jiecheng(n - 1);
            }

    3.案例2:利用递归实现斐波那契数列

            //1,1,2,3,5,8,13,21.....第n位(从0开始)值是多少?斐波那契额数列
            //递推方法:f(n)=f(n-1)+f(n-2)。终止条件:n=0,1 return 1。
            static int Fib(int n)
            {
                if (n < 0)
                {
                   Console.WriteLine("n不能是负数");
                }
                if (n == 0 || n == 1)
                {
                    return 1;
                }
                return fib(n - 1) + fib(n - 2);
            }
        

    4.案例的非递归算法

             static int JieCheng2(int n)
            {
                if (n < 0)
                {
                    Console.WriteLine("n不能是负数");
                }
                //n*(n-1)*(n-2)*1
                int result = 1;
                for (int i = 1; i <= n; i++)
                {
                    result = result * i;
                }
                return result;
            }
    
            static int Fib2(int n)
            {
                if (n < 0)
                {
                    Console.WriteLine("n不能是负数");
                }
                if (n == 0 || n == 1)
                {
                    return 1;
                }
                int[] nums = new int[n + 1];
                nums[0] = 1;
                nums[1] = 1;
                for (int i = 2; i < n + 1; i++)
                {
                    nums[i] = nums[i - 1] + nums[i - 2];
                    Console.WriteLine(string.Join(",", nums));//string.Join把一个集合用某个分隔符拼接起来,成为字符串
                }
                return nums[n];//取最后一个元素的值
            }
  • 相关阅读:
    -bash: /tyrone/jdk/jdk1.8.0_91/bin/java: cannot execute binary file
    maven依赖包下载地址
    极光推送java代码
    Shiro中session超时页面跳转的处理
    ABAP ole操作1
    OLE导出EXCEL 问题处理
    ABAP ole操作
    ABAP Memory ID
    重装GUI前备份GUI配置
    ABAP编辑器输入中文变成问号
  • 原文地址:https://www.cnblogs.com/lolitagis02/p/8094872.html
Copyright © 2011-2022 走看看