c#题目,用递归方法做斐波纳契数列,求解答

2025-04-10 07:33:21
推荐回答(4个)
回答(1):

你好,软糖来回答咯~~

代码如下

(注意递归运行很慢,超过30就很费时间了)

static void Main(string[] args) {
            Console.WriteLine("// 输入 x 退出本程序");
            //请用户输入数字,循环直到正确输入
            int 个数 = 10;
            bool 结果 = false;
            string 输入内容 = "";
            while (结果 == false) {
                Console.BackgroundColor = ConsoleColor.DarkBlue;
                Console.Write("请输入斐波那契数列的数量:  ");
                Console.BackgroundColor = ConsoleColor.Black;
                输入内容 = Console.ReadLine();
                if (输入内容.Trim(' ').ToLower() == "x") { Environment.Exit(0); }
                if (输入内容.Trim(' ').ToLower() == "") { continue; }
                结果 = 判断整数是否合法(输入内容);
            }
            个数 = int.Parse(输入内容);
            Console.BackgroundColor = ConsoleColor.DarkGreen;
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine("从 1 到 {0} 的斐波那契数列之和为:  {1}", 个数, 递归求和(个数));
            Console.BackgroundColor = ConsoleColor.Black;
            //退出
            Console.BackgroundColor = ConsoleColor.DarkCyan;
            Console.Write("按任意键退出...");
            Console.ReadKey();
        }
        static long 递归求和(int n) {
            if (n.Equals(0) || n.Equals(1)) { return 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;
                }               
            }
        }

满意请采纳,谢谢。

回答(2):

a(n+2)=a(n+1)+an
设a(n+2)+pa(n+1)=q[a(n+1)+pan]
即a(n+2)=(q-p)a(n+1)+pqan
所以q-p=1;pq=1,解出pq
得公比为q的等比数列{a(n+1)+pan}再求通项

回答(3):

int Fibonacci(int n){ int sum; if(n<=0) { return; } if(n==1 || n==2) return 1; else sum=Fibonacci(n-1)+Fibonacci(n-2); return sum;}

回答(4):

using System;

class Program
{
public static void Main(string[] args)
{
int n;

Console.Write("请输入要求斐波纳契数列的前多少项的和:");
n=Convert.ToInt32(Console.ReadLine());
Console.WriteLine("斐波纳契数列的前{0}项的和为:{1}",n,Program.f(n));
Console.WriteLine("按任意键继续。。。");
Console.ReadKey(true);
}
static ulong f(int n)
{
if(1==n)
return 1;
else
{
ulong s=f(n-1),t,t1=0,t2=1;
for(int i=2;i<=n;i++)
{
t=t2;
t2+=t1;
t1=t;
}
return s+t2;
}
}
}