15、C#基础整理(递归)_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 15、C#基础整理(递归)

15、C#基础整理(递归)

 2014/12/29 11:02:32  苏悠莫  程序员俱乐部  我要评论(0)
  • 摘要:带输出参数的函数输入参数相当于函数而言,相当于已经赋值了的变量,直接可用输出参数相当于定义一个没有值的变量,在函数中进行赋值,然后调用函数的时候将赋值带出函数例:publicvoidshuchu(inta,outintb){b=a+10;//b必须赋值}主函数里面的写法:staticvoidMain(string[]args){inta=11,b;Programp=newProgram();p.shuchu(a,outb);//b需要先定义好,对应函数的数据类型
  • 标签: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的值)

class="code_img_closed" src="/Upload/Images/2014122911/0015B68B3C38AA5B.gif" alt="" />logs_code_hide('6435c204-156e-47b3-8583-db2a1c038569',event)" src="/Upload/Images/2014122911/2B1B950FA3DF188F.gif" alt="" />
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;
        }
答案

 

发表评论
用户名: 匿名