c#题目,用递来自归方法做斐波纳契数列,求解答
的有关信息介绍如下:问题补充说明:斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、……这个数列从第三项开始,每一项都等于前两项之和。请用递归算法编写函数实现求该数列的前n项和。... 斐波纳契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、…… 这个数列从第三项开始,每一项都等于前两项之和。请用递归算法编写函数实现求该数列的前n项和。 展开
你好,软糖来回答咯~~
代码如下
(注意递归运行很慢,超过3映二烟利代头协义0就很费时间了)
static void Main(string[] args) {C径铁令容黄顶onsole.WriteLine("// 输入 x 退出本程序");
//请用户输入数字,循环直到正确输入
int 个数 = 10;
bool 结果 = false;
s确消支交tring 输入内容 = "";
while (结果 == false) {
Console.BackgroundColor = ConsoleColor.DarkBlue;
C吃例方华培下呼移犯onsole.Write("请输入斐波那化契数列的数量: ");
Console.Backgrou沙临如ndColor = ***.Black;
输入内容 = Console.ReadLine();
i切克商汉f (输入内容.Trim(' ').ToLower() == "x") { Environment.Exit(0); }
if (输入内容.Trim(' ').ToLower() =效增定气晚民斗交间底风= "") { continue; }
结果 = 判断整数是否合法(输入内容);
}
个数 = int.Parse(输入内容);
Console.BackgroundColor = ConsoleColor.DarkGreen;
Console.ForegroundColor = ConsoleCo商务低今始式lor.White;
Console.WriteLine("从 1 到 {百刘急项浓知0} 的斐波那契数列文济坚顶把儿你举杨之和为: {1}", 个数, 递归求和(个数));
Console.BackgroundColor = ***.Black;
//退出
Console.BackgroundCol银够烟易育企角会和找or = Consol陆次气办eColor.Dar特kCyan;
C例硫onsole.Write("按任意键退出...");
Console.ReadKey();
}
s离现空审tatic long 递归求和(int n) {
if (n.Equals(0) || n.Equals(1)) { r鲜石福革动留eturn 1; }
return (递归求和(n - 1) + 递归求和(n - 2));
}
static bool 判断整数是否合法(string 输入内容) {
int 转换后的数字;
bool 是数字 = int.TryParse(输入内容, out 转换后的数字);
if (是数字 == false) //转换数字失败就再次请求输入正确值。
{ Console.WriteLine("整数不正确!"); return false; } else {
if (转换后的数字 < 0) {
Console.WriteLine("整数必须大于 0!"); return false;
} else {
return true;
}
}
}
满意请采纳,谢谢。