zoukankan      html  css  js  c++  java
  • 15、C#基础整理(递归)

    带输出参数的函数

    输入参数相当于函数而言,相当于已经赋值了的变量,直接可用
    输出参数相当于定义一个没有值的变量,在函数中进行赋值,然后调用函数的时候将赋值带出函数

    例:

    public void shuchu(int a, out int b)
    { 
      b = a + 10; //b必须赋值
    }

    主函数里面的写法:

    static void Main(string[] args)
    {
    int a = 11,b;
    Program p = new Program();
    p.shuchu(a,out b);//b需要先定义好,对应函数的数据类型,用于接收传递出来的数据
    Console.WriteLine(b);//21
    }

    练习:用输出参数写一元二次方程求解的方法(返回是否有解,和x1,x2的值)

    public string fangcheng(int a, int b, int c, out double x1,out double x2)
            {
                double de =(double) b * b - 4 * a * c;
                if (a == 0)
                {
                    x1 = x2 = -1;
                    return "不是一元二次方程";
                }
                else if (de < 0)
                {
                    x1 = x2 = -1;
                    return "de<0,此方程无解";
                }
                else
                {
                    x1 = (double)(-b + de) / 2 * a;
                    x2 = (double)(-b - de) / 2 * a;
                    return "有解";
                }
            }
    答案

    递归

    一、概念:

    函数体内调用本函数自身,直到符合某一条件不再继续调用。

    **简单说就是让函数先执行到满足条件的那一步,然后带着数据开始调用函数本身。

    二、应满足条件:

    (1)有反复执行的过程(调用自身);

    (2)有跳出反复执行过程的条件(函数出口)

    三、例子

    阶乘的计算n!= n*(n-1)*(n-2)*(n-3)*……*1(n>0)



    四、注意事项notice:

    1、递归中必须要存在一个循环结束的条件。

    2、递归函数的每次调用都需要栈来存储,如果次数太多的话容易造成栈溢出。

    练习:

    1、n个桃,每过一天吃1/2+1个,7天后剩一个,原来有几个桃?

    public int tao(int day)
            {
                if (day == 7)
                {
                    return 1;
                }
                int sum = (tao(day + 1)+1)*2;
                return sum;
            }
    答案

    2、一个人赶一群羊去卖,每过一个村子卖出1/3+1只,7个村子后还剩2只,原来有几只羊?

    public double yang(int cun)
            {
                if (cun == 7)
                {
                    return 2;
                }
                double sum =(double)(yang(cun + 1) + 1) * 3;
                return sum;
            }
    答案
  • 相关阅读:
    js组件常用封装方法。。。。。【组件封装】 ★★★★★★ 1月会员日 集人气【弹窗】
    以后开公司用的资源瞎记录
    SpringSecurityFilter 链
    分布式系统数据一致性的6种方案(转)
    统一日志监控系统 springboot websocket 作品
    MyBatis generator 使用方式 小结
    swagger and restful api 参考
    kafka linux 启动脚本 sample
    转 CAS实现SSO单点登录原理
    江南白衣 Java性能优化PPT
  • 原文地址:https://www.cnblogs.com/wleaves/p/4187178.html
Copyright © 2011-2022 走看看