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;
        }

答案

时间: 2024-11-10 13:42:48

15、C#基础整理(递归)的相关文章

linux基础整理0316

一.linux基础整理 由于这是学习linux的第一周,整理的东西很杂很分散,其中包括了查看虚拟机的各种信息,命令相关的只整理了alias.date.history.cal.帮助会话screen等命令的使用,最后加上了两个常见问题处理办法:在以后的学习中会不断完善文中整理的相关内容. 1.查看系统信息类命令: 查看内核版本 [root@CentOS7 ~]#uname -r 3.10.0-957.el7.x86_64 查看系统版本 查看配置文件 [root@CentOS7 ~]#cat /etc

HTML基础整理(一)

HTLM基础整理--思维导图(标签部分) 其他: <sub>下标</sub>     <sup>上标</sup> 优先级,越往后优先级越高. "right"(右对齐)               "top" (顶部) 对齐方式<tr align="center"(居中) valign="middle"(居中) "left"(左对齐)          

算法基础_递归_求杨辉三角第m行第n个数字

问题描述: 算法基础_递归_求杨辉三角第m行第n个数字(m,n都从0开始) 解题源代码(这里打印出的是杨辉三角某一层的所有数字,没用大数,所以有上限,这里只写基本逻辑,要符合题意的话,把循环去掉就好): import java.util.Scanner; /** * 求杨辉三角第m层第n个数字 * @author Administrator * */ public class Demo05 { public static int f(int m,int n) { if(n==0)return 1

一个嵌套很多层的列表,如l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]],用递归取出所有的值

'''一个嵌套很多层的列表,如l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]],用递归取出所有的值''' l=[1,2,[3,[4,5,6,[7,8,[9,10,[11,12,13,[14,15]]]]]]] def get(seq): for item in seq: if type(item) is list: get(item) else: print(item) get(l) 原文地址:https://www.cnblogs.com/

15、SQL基础整理(视图)

视图 即虚拟表 系统-右键-新建视图 编辑前200行 select *from studentscore 代码创建法: create view studentscore as select student.sno,sname,ssex,sbirthday,class,cno,degree from student join score on student.Sno=score.sno 删除视图: drop view studentscore 修改视图: alter view cts as sel

linux基础整理4

IP地址配置 1.setup工具 vi /etc/sysconfig/network-scripts/ifcfg-eth0 ONBOOT=yes service network restart 2.修改虚拟机连接方式为桥接 3.编辑-虚拟网络编辑器-vmnet0--桥接到有线网卡 4.UUID错误(针对复制镜像生效) vi/etc/sysconfig/network-scripts/ifcfg-eth0         删除MAC地址行 rm –rf/etc/udev/rules.d/70-pe

MySQL技术分类一:DB应用开发基础整理

MySQL技术分类整理一:DB应用开发基础1.库1).创建库syntax:CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name    [create_specification] ... create_specification:    [DEFAULT] CHARACTER SET [=] charset_name  | [DEFAULT] COLLATE [=] collation_name 注:如果不使用if not exists,则当数据库

机器学习 —— 基础整理(六):线性判别函数——感知器、松弛算法、Ho-Kashyap算法

本文简单整理了以下内容: (一)线性判别函数与广义线性判别函数 (二)感知器 (三)松弛算法 (四)Ho-Kashyap算法 (一)线性判别函数与广义线性判别函数 一.线性判别函数 这篇总结继续关注分类问题.假设判别函数(Discriminant function)的参数形式已知,用训练的方法直接根据样本估计判别函数的参数.线性判别函数的形式为: $$g(\textbf x)=\textbf w^{\top}\textbf x+w_0$$ $\textbf x\in \mathbb R^d$ 是

C#基础整理

元旦整理书架发现一本小册子--<C#精髓>中国出版社2001年出版的,粗略翻了下关于C#的知识点挺全的虽然内容谈得很浅也有很多过时的内容(话说这本书是我在旧书店花5块钱淘的)我保留原有章节并删减部分过时和不重要内容添加一些自己觉得重要的内容,具体目录如下: 第一章   简介    什么是.NET.CLI.CLR.CIL.IL.BCL?    什么是JIT和GC,JIT和GC是如何工作的?   第二章 C#语言参考   标识符.类型.变量.表达式与运算符.语句.类型组织.继承.访问修饰符.类和结