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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python数据可视化系列教程——matplotlib绘图全解

    python数据可视化系列教程——matplotlib绘图全解全栈工程师开发手册(作者:栾鹏)python教程全解matplotlib是受MATLAB的启发构建的。MATLAB是数据绘图领域广泛使用的语言和工具。MATLAB语言是面向过程的。利用函数的调用,MATLAB中可以轻松的利用一行命令来绘制直线,然后再用一系列的函数调整结果。matplotlib有一套完全仿照MATLAB的函数形式的绘图接口,在matplotlib.pyplot模块中

    2022年6月15日
    36
  • sublime插件合集「建议收藏」

    sublime插件合集「建议收藏」本文系转载,原文地址:http://www.xuanfengge.com/practical-collection-of-sublime-plug-in.html版权归 轩枫阁 所有本文标题:实用的sublime插件集合–sublime推荐必备插件转载请务必注明出处,小生将不胜感激,谢谢!喜欢本文或觉得本文对您有帮助,请分享给您的朋友^_^

    2022年6月24日
    31
  • 约瑟夫环——公式法(递推公式)

    约瑟夫环——公式法(递推公式)约瑟夫问题约瑟夫问题是个有名的问题:N个人围成一圈,第一个从1开始报数,报M的将被杀掉,下一个人接着从1开始报。如此反复,最后剩下一个,求最后的胜利者。例如只有三个个人,把他们叫做A、B、C围成一圈,从A开始报数,报2的人被杀掉。A开始报数,他报1。侥幸逃过一劫。然后轮到B报数,他报2。非常惨,他被杀了C接着从1开始报数然后轮到A报数,他报2。也被杀死了。最终胜利者是C解决方案普通解

    2022年5月4日
    48
  • 请说明 Iaas Paas 和 Saas 分别提供的服务和特点_一张图读懂咖啡

    请说明 Iaas Paas 和 Saas 分别提供的服务和特点_一张图读懂咖啡编译:老夫子原文:https://www.bmc.com/blogs/saas-vs-paas-vs-iaas-whats-the-difference-and-how-to-choose/从小型企业到全球企业,云都是一个非常热门的话题,它是一个非常广泛的概念,涵盖了很多在线领域。无论是应用程序还是基础架构部署,当您开始考虑将业务转移到云时,了解各种云服务的差异和优势比以往任何时候…

    2022年10月17日
    4
  • bz2压缩解压「建议收藏」

    bz2压缩解压「建议收藏」压缩bzip2-zfileName解压bzip2-dfileName.bz2bunzip2fileName压缩成.tar.bz2tar-jcvffileName.tar.bz2fileName解压.tar.bz2tar-jxvffileName.tar.bz2

    2022年6月3日
    39
  • java 字符串截取的几种方式

    java 字符串截取的几种方式众所周知,java提供了很多字符串截取的方式。下面就来看看大致有几种。1.split()+正则表达式来进行截取。将正则传入split()。返回的是一个字符串数组类型。不过通过这种方式截取会有很大的性能损耗,因为分析正则非常耗时。Stringstr=”abc,12,3yy98,0″;String[]strs=str.split(“,”);for(inti=0,len=strs.

    2022年5月19日
    36

发表回复

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

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