13

2016-04-22  11:01:00

  1. Switch…case 总结(网摘)

例题:

Console.WriteLine("1.汉堡包");
Console.WriteLine("2.薯条");
Console.WriteLine("3.鸡块");
Console.WriteLine("4.鸡腿");
Console.WriteLine("5.鸡米花"); Console.Write("请输入您的选择项目数字:");
string a = Console.ReadLine(); switch (a)
{
case "":
Console.WriteLine("您选择的是汉堡包!");
break;
case "":
Console.WriteLine("您选择的是薯条!");
break;
case "":
Console.WriteLine("您选择的是鸡块!");
break;
case "":
Console.WriteLine("您选择的是鸡腿!");
break;
case "":
Console.WriteLine("您选择的是鸡米花!");
break;
default:
Console.WriteLine("输入有误!");
break;
}

总结:switch语句和if语句的区别:

    

     大于等于(>=)、小于等于(<=)的判断用if语句,而等于(=)的判断用switch语句

     switch语句中的case类似于if…else…else if…else,但是离散值的判断。

       离散值的判断自认为是等于情况的判断)。

     switch一般都可以及用if重写,但是if不一定能用switch重写。

    不要忘了break.C#break不写是不行的,除了合并case的情况。

     case 中的值必须是常量,不能是变量、表达式。

2.递归算法(网摘)

简介:

在数学与计算机科学中,递归是指在函数的定义中使用函数自身的方法。
  递归算法是一种直接或者间接地调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。
递归算法解决问题的特点:
  (1) 递归就是在过程或函数里调用自身。
  (2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。
  (3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。
  (4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。在实际编程中尤其要注意栈溢出问题。

  借助递归方法,我们可以把一个相对复杂的问题转化为一个与原问题相似的规模较小的问题来求解,递归方法只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。但在带来便捷的同时,也会有一些缺点,也即:通常用递归方法的运行效率不高。

【问题】 编写计算斐波那契(Fibonacci)数列的第n项函数fib(n)。 
斐波那契数列为:0、1、1、2、3、……,即: 
fib(0)=0; 
fib(1)=1; 
fib(n)=fib(n-1)+fib(n-2)
(当n>1时)。 
写成递归函数有: 
int
fib(int n) 
{ if
(n==0) return 0; 
if (n==1)
return 1; 
if
(n>1) return fib(n-1)+fib(n-2); 

递归算法的执行过程分递推和回归两个阶段。在递推阶段,把较复杂的问题(规模为n)的求解推到比原问题简单一些的问题(规模小于n)的求解。例如上例中,求解fib(n),把它推到求解fib(n-1)和fib(n-2)。也就是说,为计算fib(n),必须先计算fib(n-1)和fib(n-2),而计算fib(n-1)和fib(n-2),又必须先计算fib(n-3)和fib(n-4)。依次类推,直至计算fib(1)和fib(0),分别能立即得到结果1和0。在递推阶段,必须要有终止递归的情况。例如在函数fib中,当n为1和0的情况。 
在回归阶段,当获得最简单情况的解后,逐级返回,依次得到稍复杂问题的解,例如得到fib(1)和fib(0)后,返回得到fib(2)的结果,……,在得到了fib(n-1)和fib(n-2)的结果后,返回得到fib(n)的结果。 
在编写递归函数时要注意,函数中的局部变量和参数知识局限于当前调用层,当递推进入“简单问题”层时,原来层次上的参数和局部变量便被隐蔽起来。在一系列“简单问题”层,它们各有自己的参数和局部变量。 
由于递归引起一系列的函数调用,并且可能会有一系列的重复计算,递归算法的执行效率相对较低。当某个递归算法能较方便地转换成递推算法时,通常按递推算法编写程序。例如上例计算斐波那契数列的第n项的函数fib(n)应采用递推算法,即从斐波那契数列的前两项出发,逐次由前两项计算出下一项,直至计算出要求的第n项。

习题:

1. 计算1+2+3+4+...+100的值

 static void Main(string[] args)
{
Console.WriteLine(Process2());
Console.ReadLine();
}
public static int Process2(int i)
{
//计算1+2+3+4+...+100的值
if (i == ) return ;
return Process2(i - ) + i; }

2. 计算1 -2 +3 +-4+ 5- 6 + 7 - 8 + 9的值

   static void Main(string[] args)
{ Console.WriteLine(Process3() - Process3());
Console.ReadLine();
} public static int Process3(int i)
{
//计算1 -2 +3 +-4+ 5- 6 + 7 - 8 + 9的值
if (i == ) return ;
if (i == ) return ;
else return Process3(i - ) + i;
}

3.汉诺塔问题

  static void Main(string[] args)
{
Hanoi(, 'A', 'B', 'C');
Console.ReadLine();
}
public static void Hanoi(int n ,char A, char B, char C)
{
//汉诺塔问题
//将n个盘子从A座借助B座,移到C座
if (n == ) Move(A, C);
else
{
Hanoi(n - , A, C, B);
Move(A, C);
Hanoi(n - , B, A, C);
} }
public static void Move(char startPlace, char endPlace)
{
Console.WriteLine("Move {0} To {1}",startPlace,endPlace);
}

4.一列数的规则如下: 1、1、2、3、5、8、13、21、34...... 求第30位数是多少

1)递归算法实现

Console.WriteLine(Foo());
}
public static int Foo(int i)
{
if (i <= )
return ;
else if (i > && i <= )
return ;
else return Foo(i - ) + Foo(i - );

2)for 循环

   int a = , b = , c = ;
for (int j = ; j <= ; j++)
{
c = a + b;
a = b;
b = c;
}
Console.WriteLine(c);

3)while 循环

 int a = , b = , c = ;
int k = ;
while (k<=)
{
c = a + b;
a = b;
b = c;
k++;
}
Console.WriteLine(c);

20160422 --Switch…case 总结; 递归算法的更多相关文章

  1. Android Studio快捷键switch case 轻松转换为if else

    Android Studio快捷键switch case 轻松转换为if else 今天碰到的问题,没有找到资料,后面找到了方法,这个记下来,转载请注明出处:http://www.cnblogs.co ...

  2. java中的switch case

    switch-case语句格式如下 switch(变量){ case 变量值1: //; break; case 变量值2: //...; break; ... case default: //... ...

  3. 为什么说在使用多条件判断时switch case语句比if语句效率高?

    在学习JavaScript中的if控制语句和switch控制语句的时候,提到了使用多条件判断时switch case语句比if语句效率高,但是身为小白的我并没有在代码中看出有什么不同.去度娘找了半个小 ...

  4. c语言基础表达式, 关系运算符, 逻辑运算符, 位运算符, 数据的取值范围, 分支结构(if...else, switch...case)

    1.表达式: 表达式的判断是有无结果(值), 最简单的表达式是一个常量或变量, 如:12, a, 3 + 1, a + b, a + 5 都是表达式 2.BOOL(布尔)数据类型: c语言中除了基本数 ...

  5. 运算符 与 分支语句:if ,else if,else;switch case

    分支语句: if        else if       else      :    switch          case --如何使用 if  else if  else: Console. ...

  6. switch...case和if...else if的判断应用

    判断成绩所属等级的 两种方法 1...      switch...case方法: #include<stdio.h> int main(void) { ;i <= ;++i) // ...

  7. go语言选择语句 switch case

    根据传入条件的不同,选择语句会执行不同的语句.下面的例子根据传入的整型变量i的不同而打印不同的内容: switch i { case 0: fmt.Printf("0") case ...

  8. 简谈switch case

    工作中从buff里截取了一个字符串,然后和配置文件中的字符串名字对比 ,如果一样,处理,不一样,elseif 再判断,再处理! switch(){case : case :...... }先说语法,再 ...

  9. 用Dictionary替换switch case

    用switch case处理一个很长的判断,例如56个民族01代表汉族,02代表藏族,03代表壮族...,当传入数字想获取民族名称时就得写56个case,当传入民族获取背后的数字时,又得再写56个ca ...

随机推荐

  1. Charles 的几个调试技巧

    Charles 是一个网络调试的代理工具,类似 Windows 下的 Fildder,这里介绍下几个常用的调试技巧,使用的版本是 Charles 4. 1.移动端抓包 在移动开发中,经常会遇到在手机上 ...

  2. LeetCode300. Longest Increasing Subsequence

    Description Given an unsorted array of integers, find the length of longest increasing subsequence. ...

  3. Windows之建立C++开发环境

    下载:https://yun.baidu.com/s/1pK7j4Fp 解压得到 把myMingw文件夹复制系统根目录下. 添加C:\myMingw\bin到系统环境变量 双击make-3.81.ex ...

  4. UFLDL深度学习笔记 (一)反向传播与稀疏自编码

    UFLDL深度学习笔记 (一)基本知识与稀疏自编码 前言 近来正在系统研究一下深度学习,作为新入门者,为了更好地理解.交流,准备把学习过程总结记录下来.最开始的规划是先学习理论推导:然后学习一两种开源 ...

  5. Android Notification使用方法

    1.http://www.cnblogs.com/plokmju/p/android_Notification.html 2.http://blog.csdn.net/vipzjyno1/articl ...

  6. 内存空间申请(C)

    标准C,C++: malloc----free new----delete WINDOWS API: gnew(.net) LocalAlloc----LocalFree GlobalAlloc--- ...

  7. ssh远程登录+查看系统版本+使用scp命令上传下载

    ssh远程登录命令简单实例   ssh命令用于远程登录上Linux主机.   常用格式:ssh [-l login_name] [-p port] [user@]hostname 更详细的可以用ssh ...

  8. c语言行编辑程序

    static.h 头文件 typedef struct bufferStatic{ char *top; char *base; int staticSize; }bufferStatic; type ...

  9. UIAlertController custom font, size, color

    本文转载至 http://stackoverflow.com/questions/26460706/uialertcontroller-custom-font-size-color up vote2d ...

  10. std::condition_variable(3)复习

    #include <iostream> // std::cout #include <thread> // std::thread #include <mutex> ...