[Day19]C# 鸡础观念- 让时间倒转吧~递回

电视可以倒带,
然後重播,
喜欢看几次就看几次,
C#中也能让程序倒带,重新执行,
执行到满意为止

递回/images/emoticon/emoticon58.gif

  • 递回就是在方法中呼叫方法自己
  • 通常会使用递回的程序码都比较简洁
  • 递回通常执行效率较低

范例:我们来让20一直倒扣到0,然後喊出新年快乐吧

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CsharpDemo
{

    class Program
    {
        static void Main(string[] args)
        {
            //呼叫递回方法
            Fac(20);
            
            Console.WriteLine("新年快乐!");
            Console.ReadKey();
        }
    //宣告一个递回方法
        static void Fac(int n)
        {
            Console.WriteLine("n = " + n);
            //如果n等於0之後就不呼叫自己
            if (n != 0)
            {
                Fac(n - 1);
            }
        }
    }
}

结果:

n = 20
n = 19
n = 18
n = 17
n = 16
n = 15
n = 14
n = 13
n = 12
n = 11
n = 10
n = 9
n = 8
n = 7
n = 6
n = 5
n = 4
n = 3
n = 2
n = 1
n = 0
新年快乐!

进阶练习:/images/emoticon/emoticon32.gif

费波那契数列:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CsharpDemo
{

    class Program
    {
        static void Main(string[] args)
        {
            //宣告一个整数,看要输出多少项
            int n = Convert.ToInt32(Console.ReadLine());

            Console.WriteLine("Fibonacci : ");
            for (int i = 1; i <= n; i++)
            {
                //输出费波那契数列的第i项
                Console.Write(Fibonacci(i) + "\t");

                //每输出五项换一行
                if ((i % 5) == 0)
                {
                    Console.WriteLine();
                }
            }

            Console.ReadKey();
        }

        //宣告方法
        static int Fibonacci(int n)
        {
            if (n == 1 || n == 2)
            {
                //初始值
                return 1;
            }
            else
            {
                //递回
                return (Fibonacci(n - 1) + Fibonacci(n - 2));
            }
        }


    }
  }

输入:

30

输出:

30
Fibonacci :

1       1       2       3       5
8       13      21      34      55
89      144     233     377     610
987     1597    2584    4181    6765
10946   17711   28657   46368   75025
121393  196418  317811  514229  832040

这就一个C#倒带按键的故事~/images/emoticon/emoticon34.gif


<<:  LiteX/VexRiscv 简介与使用 (二点七五) 斯有海与陆地植物

>>:  WordPress 适用响应式(RWD)浏览图片灯箱效果外挂-WP Lightbox 2

企业资料通讯Week5 (4) |DNS (网域名称系统)[一]

甚麽是 DNS? 想知道更深:鸟哥的 Linux 私房菜|第十九章、主机名称控制者: DNS 服务器...

Best Digital Marketing Comapny | Siapteh

Many of our business campaign advisors are analyti...

# Day19--从Sruct、Class的本质差异论MVC

本篇内容来自於我在Medium上写的一篇文章:Swift 语法再读#1 [Between Struc...

#0-好的动态让你成为网站界爱马仕、特斯拉!(前言)

Yo! 我是Rachel。今年成功从行销转职成前端工程师, 在前辈的鼓励下参加了铁人赛!这次选择了前...

[ JS个人笔记 ] 资料型别—DAY1

资料型别 为何需判断型别,其因为电脑在执行时,需先判断资料是何种型别,才可采取运算方式。例如数字12...