我已经多年没有使用静态类型语言了,现在我需要学习C#。我的第一个任务是完成这里的15个练习。
我刚刚完成了第二个斐波那契任务,虽然并不难实现且可行,但是我认为它看起来很丑,而且是否可以用更加典雅精简的代码实现呢?
我通常喜欢和已经知道自己在做什么的人一起学习编程,但今天这个选项对我不适用,所以我希望在这里发帖会是下一个最好的选择。
因此,对于所有的C#高手们,如果您要重构以下代码,它会是什么样子?
我刚刚完成了第二个斐波那契任务,虽然并不难实现且可行,但是我认为它看起来很丑,而且是否可以用更加典雅精简的代码实现呢?
我通常喜欢和已经知道自己在做什么的人一起学习编程,但今天这个选项对我不适用,所以我希望在这里发帖会是下一个最好的选择。
因此,对于所有的C#高手们,如果您要重构以下代码,它会是什么样子?
using System;
using System.Collections;
namespace Exercises
{
class MainClass
{
public static void Main(string[] args)
{
Console.WriteLine("Find all fibinacci numbers between:");
int from = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("And:");
int to = Convert.ToInt32(Console.ReadLine());
Fibonacci fibonacci = new Fibonacci();
fibonacci.PrintArrayList(fibonacci.Between(from, to));
}
}
class Fibonacci
{
public ArrayList Between(int from, int to)
{
int last = 1;
int penultimate = 0;
ArrayList results = new ArrayList();
results.Add(penultimate);
results.Add(last);
while(last<to)
{
int fib = last + penultimate;
penultimate = last;
last = fib;
if (fib>from && fib<to) results.Add(fib.ToString());
}
return results;
}
public void PrintArrayList(ArrayList arrayList)
{
Console.WriteLine("Your Fibonacci sequence:");
Console.Write(arrayList[0]);
for(int i = 1; i<arrayList.Count; i++)
{
Console.Write("," + arrayList[i]);
}
Console.WriteLine("");
}
}
}
Regards,
Chris