回 帖 发 新 帖 刷新版面

主题:求助!

我有到作业不懂做.请大虾帮帮手!
题目:
从键盘上输入一个整数n,输出斐波纳契数列。斐波纳契数列是一种整数数列,其中每数等于前面两数之和,如0 1 1 2 3 5 8 13 ……
有道C的样本。。。但不懂怎样修改成C#的!·。
#include <stdio.h>
int fun(int n);
main()
{
int i,n=0;
scanf("%d",&n);
for( i=0;i<n;i++)
printf("%d  ",  fun ( i ));
}
int fun(int n)

if(___1___) 
return 0;
else 
if(___2___) 
return 1;
else 
return___3___;
}
答案:
(1)n==0
(2)n==1
(3)fun(n-1)+fun(n-2)
分析:
从题意可以得知本题计算的是斐波纳契数列,斐波纳契数列的计算方法由题目得知该数列中每数等于前面两数之和,如0 1 1 2 3 5 8 13 ……,这样我们可以列出以下计算斐波纳契数列的公式:
fun(0)=0      当n=0
fun(1)=1      当n=1
fun(n)=fun(n-1)+fun(n-2) 当n>1
当n等于0的时候,即计算斐波纳契数列的第一个数字,根据题目知道该数列的第一个数字为0。
当n等于1的时候,即计算斐波纳契数列的第二个数字,根据题目知道该数列的第二个数字为1。
当n等于2的时候,即计算斐波纳契数列的第三个数字,由于该数列中每数等于前面两数之和,所以fun(2)=fun(1)+fun(0)。
当n等于3的时候,即计算斐波纳契数列的第四个数字,由于该数列中每数等于前面两数之和,所以fun(3)=fun(2)+fun(1)。
……
所以当n大于1的时候,fun(n)=fun(n-1)+fun(n-2)。
这里存在函数调用本身的现象,这种现象在程序设计中称为递归。

回复列表 (共3个回复)

沙发

递归或者数组迭代

板凳

不太明白.
请写下..谢谢了

3 楼

using System;
using System.Collections.Generic;
using System.Text;

namespace _23456
{
    class Program
    {
        static void Main(string[] args)
        {
            int num=0;
            int n = Convert.ToInt32(Console.ReadLine());//这个意思是由自己确定要求的个数
            for (int a = 0; a < n; a++)
                num += a;
            Console.WriteLine("{0}", num);
            Console.Read();

        }
    }
}
我在我的机子上可以了,你在自己的电脑上试下,有什么错误请告诉我一下。
谢谢!
共同学习共同进步

我来回复

您尚未登录,请登录后再回复。点此登录或注册