14、函数输出参数、递归

1、函数
输入参数对于函数而言,相当于已经赋值了的变量,直接可用。
输出参数相当于定义了一个变量,需要在函数中为其赋值,然后调用函数的时候将所赋值带出函数。
例1:
输入a,b,c的值,判断是不是一个一元二次方程:
class Program
    {
        public string fangcheng(double a, double b, double c, out double x1, out double x2)
        {
            double d = b * b - 4 * a * c;
            if (a == 0)
            {
                x1 = -b/c;
                x2 = -b/c;
                return "不是一元二次方程";
            }
            else
            {
                if (d < 0)
                {
                    x1 = -1;
                    x2 = -1;
                    return "无解";
                }
                else if (d == 0)
                {
                    x1 = -(b + Math.Sqrt(d)) / (2 * a);
                    x2 = -(b - Math.Sqrt(d)) / (2 * a);
                    return "有两个相等的实数根";
                }
                else
                {
                    x1 = -(b + d) / (2 * a);
                    x2 = -(b - d) / (2 * a);
                    return "有两个不相等的实数根";
                }
            }
        }
        static void Main(string[] args)
        {
            Program aaa = new Program();
            Console.WriteLine("请输入a的值:");
            double a = int.Parse(Console.ReadLine());
            Console.WriteLine("请输入b的值:");
            double b = int.Parse(Console.ReadLine());
            Console.WriteLine("请输入c的值:");
            double c = int.Parse(Console.ReadLine());
            double x1, x2;
            Console.WriteLine(aaa.fangcheng(a,b,c,out x1,out x2));
            Console.WriteLine("x1=" + x1 +"\n"+ "x2=" + x2);
            Console.ReadLine();
        }
}
2、递归
例2:
(1)猴子摘桃子,后一天摘前一天的一半加一个,第七天还有一个,总共有几个?
(2)一人赶着一群羊,到一个村就卖掉1/3加一只,到第七个村庄时还有2只,总共有几只?
(3)一对幼兔两个月长成成兔并生下一对幼兔,9个月后有几对?
class Program
    {
        public int taozi(int day)
        {
            if (day == 7)
            {
                return 1;
            }
            else
            {
                int n = 2 * (taozi(day + 1) + 1);
                return n;
            }
        }
        public int yang(int cun)
        {
            if (cun == 7)
            {
                return 2;
            }
            else
            {
                int n = 3 * (yang(cun + 1) + 1);
                return n;
            }
        }
        public int tuzi(int yue)
        {
            if (yue == 0)
            {
                return 1;
            }
            else
            {
                int n = tuzi(yue-2)*2;
                return n;
            }
        }
        static void Main(string[] args)
        {
            Program dd = new Program();
            Console.WriteLine(dd.taozi(1));
            Console.WriteLine(dd.yang(1));
            Console.WriteLine(dd.tuzi(9));
            Console.ReadLine();
        }
}
时间: 2024-12-14 14:48:59

14、函数输出参数、递归的相关文章

例题:函数输出参数。理解函数的作用,函数是一个相对独立的代码块

class Program    {        public  int[] shuchucanshu(int[] shu,out int a,out int b) //基本格式,定义一个int数组        {            for (int i = 0; i < shu.Length ; i++) //冒泡排序            {                for (int j = i; j < shu.Length -1; j++)               

C++14使用std::integer_sequence展开tuple作为函数的参数

元组是一种长度固定的允许有不同类型元素的集合,根据元素的个数不同又分别称作一元组.二元组.三元组等.C++11中标准库增加了一个叫std::tuple的类模板,用于表示元组. 下面的代码演示了使用C++创建一个三元组. auto tuple = std::make_tuple(1, 'A', "test"); std::cout << std::get<0>(tuple) << std::endl; std::cout << std::g

python 复习 4-1 函数、参数、返回值、递归

函数 完成特定功能的一个语句组,这个语句组可以作为一个单位使用,并且给它组语句取一个名子,即函数名 可以通过函数名在程序不同地方多次执行,即函数调用 预定义函数(可以直接使用) 自定义函数(自编写的) 函数的定义: def 函数句([参数列表]): //定义 ``` def hello (): print(hello world) #### 函数的调用: - 函数名([参数列表]) //调用 hello() #### 函数的参数: 形式参数和实际参数 - 在定义函数时,函数名后面的括号中的变量名

第10天:apply和call、bind、函数作为参数、返回值使用、闭包、递归的样例

apply和call apply和call都可以改变this的指向 函数的调用,改变this的指向 函数名字.apply(对象,[参数1,参数2,.....]) 方法名字.apply(对象,[参数1,参数2,.....]) 方法名字.call(对象,参数1,参数2,.....) 方法名字.call(对象,参数1,参数2,.....) 不同的地方:参数传递是方式不一样 只要是想使用别的对象的方法,并且希望这个方法是当前对象的,那么久可以使用apply或者call的方法改变this的指向 apply

8.14 函数递归

8.14 函数递归 函数的嵌套调用是:函数嵌套函数.函数的递归调用:它是一种特殊的嵌套调用,但是它在调用一个函数的过程中,又直接或间接地调用了它自身. 递归必须要有两个明确的阶段: 递推:一层一层递归调用下去,进入下一层递归的问题规模都将会减小 回溯:递归必须要有一个明确的结束条件,在满足该条件开始一层一层回溯. 递归的精髓在于通过不断地重复逼近一个最终的结果. 例如,已知一个人的年龄为16,后面每个人的年龄都是前一个人的年龄+2,求第n个人的年龄: age = 16 def age_func(

声明数组变量/// 计算所有元素的总和/打印所有元素总和/输出/foreach循环/数组作为函数的参数/调用printArray方法打印

实例 下面是这两种语法的代码示例: double[] myList; // 首选的方法 或 double myList[]; // 效果相同,但不是首选方法 创建数组 Java语言使用new操作符来创建数组,语法如下: arrayRefVar = new dataType[arraySize]; 上面的语法语句做了两件事: 一.使用dataType[arraySize]创建了一个数组. 二.把新创建的数组的引用赋值给变量 arrayRefVar. 数组变量的声明,和创建数组可以用一条语句完成,如

9.20 windows静态库和动态库的使用 函数可变参 递归使用 多线程查找

指针内存面试题:                           对整个数组取地址+1前进了整个数组.再强转成double*  根据double*步长再减去1 #include <stdio.h> int main() { double db[5] = {1.0,2.0,3.0,4.0,5.0}; printf("%f\n", *((double *)(&db + 1) - 1)); // 结果输出5.0 return 0; } #include <std

day3-python的函数及参数

函数式编程最重要的是增强代码的重用性和可读性 1 2 3 4 def 函数名(参数):     ...     函数体     ... 函数的定义主要有如下要点: def:表示函数的关键字 函数名:函数的名称,日后根据函数名调用函数 函数体:函数中进行一系列的逻辑计算,如:发送邮件.计算出 [11,22,38,888,2]中的最大数等... 参数:为函数体提供数据 返回值:当函数执行完毕后,可以给调用者返回数据. 以上要点中,比较重要有参数和返回值: 1.返回值 函数是一个功能块,该功能到底执行

11.高阶函数(匿名/*递归/函数式)对象编程基础

高阶函数匿名函数匿名函数存在的情况:内置函数函数式编程递归函数式编程面向对象的程序设计类:实例:OOP类的名称空间/对象的名称空间 高阶函数 匿名函数 lambda x:x+y #return x+y 定义标志/参数(形式类似函数传参)/跟表达式(返回) 匿名函数存在的情况: 执行完这行之后,如果没有被赋值给别的变量 其引用计数为0,就会被内存垃圾回收机制清空 from functoolimport reduce sorted 倒序并且生成新列表/sort是仅仅倒序 map 映射 reduce