c# 递归算法

c# 递归算法c#题目如下:要求输出:1,2,3,5,8,13,21,34,55,89写法一:publicclassMyClass{ publicstaticvoidMain() { int[]cSu

大家好,又见面了,我是你们的朋友全栈君。

c#题目如下:

要求输出:1,2,3,5,8,13,21,34,55,89

写法一:

public class MyClass

{

public static void Main()

{

int[] cSum = new int[10];

        string sSum=””;

        for (int i = 0; i < cSum.Length; i++)

        {

if(i==0)

{

cSum[i]=1;

sSum=””+cSum[i];

}

else if(i==1)

{

cSum[i]=cSum[i-1]+cSum[i-1];

sSum=sSum+’,’+cSum[i];

}

else

{

cSum[i]=cSum[i-1]+cSum[i-2];

sSum=sSum+’,’+cSum[i];

}

}

//输出结果1,2,3,5,8,13,21,34,55,89,普通写法

Console.WriteLine(sSum);

Console.ReadKey();

}

}

Snippet Compliler调试通过

这样写虽然能实现,但是感觉不大好,重构,用递归写法

写法二:

public class MyClass

{

public static void Main()

{

int[] cSum= new int[10];

string sSum=””;

for(int j=0;j<cSum.Length;j++)

{

cSum[j]= process(j);

if(sSum!=””)

{

sSum=sSum+’,’;

}

sSum+=cSum[j];

}

//输出结果1,2,3,5,8,13,21,34,55,89,递归写法

Console.WriteLine(sSum);

   Console.ReadKey();    

}

public static int process(int i)

{

int s;

if(i==0||i==1)

{

s=i+1;

}

else

{

s=process(i-1)+process(i-2);

}

return s;

}

}

通过递归算法重构了写法一

下面留个题目,要求输出:1,1,2,3,5,8,13,21,34,55

写法三:

public class MyClass

{

public static void Main()

{

int[] cSum = new int[10];

            string sSum=””;

            for (int i = 0; i < cSum.Length; i++)

            {

if(i==0||i==1)

{

cSum[i]=1+cSum[i];

if(sSum!=””)

{

sSum+=”,”;

}

sSum+=cSum[i];

}

else

{

cSum[i]=cSum[i-1]+cSum[i-2];

sSum=sSum+’,’+cSum[i];

}

}

//输出结果1,1,2,3,5,8,13,21,34,55

Console.WriteLine(sSum);

Console.ReadKey();

}

}

请把写法三改成递归写法?呵呵,可以试一下!

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155651.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • dedecms幻灯片调用图片模糊的解决办法

    dedecms幻灯片调用图片模糊的解决办法

    2021年9月19日
    36
  • 自学Java开发一般需要多久?

    自学Java开发一般需要多久?自学Java开发一般需要多久?相信有很多想转行或者想学习Java的人都会关注这个问题!那我们今天就来说一下这个问题,具体需要多久呢?这个时间因人而异,毕竟每个人的学习能力和效率都是不同的!打个比方,如果你是零基础,每天学习8小时,基本上每天都按时学习的话,大概需要半年多的时间,就能学的差不多了!如果你本身就会C或C++语言,那么Java对你来说也许会简单许多,学起来自然就快了!下面就给大家简单说一下学习方法,让你尽可能快的学会Java!学习路线:…

    2022年7月8日
    27
  • js判断字符串数组是否包含某个字符串_怎么判断数组有几个元素

    js判断字符串数组是否包含某个字符串_怎么判断数组有几个元素方法一:indexOf(item,start)Item:要查找的值;start:可选的整数参数,缺省则从起始位子开始查找。indexOf()返回元素在数组中的位置,如果没有则返回-1,该方法只能查找字符串,数字等,不能查找类或者数组或者NaN,如果想查找类或者数组,可以使用下面介绍的其他方法;vararr=[‘a’,’b’,’c’,’d’];console.log(arr.indexOf(‘b’)); //1console.log(arr.indexOf(‘ab’))

    2022年10月18日
    3
  • Java集合Stream类filter的使用

    Java集合Stream类filter的使用之前的Java集合中removeIf的使用一文写了使用removeIf来实现按条件对集合进行过滤。这篇文章使用同样是JDK1.8新加入的Stream中filter方法来实现同样的效果。

    2022年6月12日
    50
  • pycharm怎么打开工具栏_pycharm菜单栏介绍

    pycharm怎么打开工具栏_pycharm菜单栏介绍  

    2022年8月26日
    6
  • 网络协议篇之DHCP协议(一)—— DHCP协议基础

    网络协议篇之DHCP协议(一)—— DHCP协议基础一,动态主机配置协议DHCP1,DHCP简介DHCP(DynamicHostConfigurationProtocol),动态主机配置协议,是一个应用层协议。当我们将客户主机ip地址设置为动态获取方式时,DHCP服务器就会根据DHCP协议给客户端分配IP,使得客户机能够利用这个IP上网。DHCP的前身是BOOTP协议(BootstrapProtocol),BOOTP

    2022年5月10日
    54

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号