标题:C语言练习求助
只看楼主
yjl19891023
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-3-14
 问题点数:0 回复次数:2 
C语言练习求助
我今天遇到一道C语言题目,知道要用到“高精度算法”,可是具体的算法及程序我不知道怎么来实现,希望哪位高手能帮帮我的忙。
   题目如下:
    Fibonacci数列问题
背景:
Fibonacci 数列有如下特点:其第 1 , 2 项均为 1 , 1 。从第 3 个数开始,该数是其前两个数之和 . 即 :


F1=1 (n=1)
F2=1 (n=2)
Fn=Fn-1+Fn-2 (n>=3)
请你编写一个函数 fun ,它的功能是:对于一个给定的 数( N ), 求不大于 N 的最大 Fibonacci 数。

输入

输入的第一行是一个正整数,表示下面有几组数据需要计算。之后的每一行是一个数据 N ,其中 1 < N <= 101000 。

输出

对应输入的每一行,输出一个 不大于 N 的最大 Fibonacci 数。


  测试输入 期待的输出 时间限制 1秒  内存限制 20480KB

测试用例 0 以文本方式显示
1: 2
2: 9
3: 1234567890
 以文本方式显示
1: 8
2: 1134903170
搜索更多相关主题的帖子: C语言 Fibonacci 练习 算法 
2008-03-14 17:40
xianshizhe111
Rank: 1
等 级:新手上路
帖 子:1451
专家分:0
注 册:2007-12-8
得分:0 
在论坛上翻一翻.
2008-03-14 18:01
sunkaidong
Rank: 4
来 自:南京师范大学
等 级:贵宾
威 望:12
帖 子:4496
专家分:141
注 册:2006-12-28
得分:0 
我这个能算了,但是肯定不满足你的条件..你改一下
#include "stdio.h"
#include"malloc.h"
int fabc(int n)
{
    if(n==1||n==2)
        return 1;
    else
        return fabc(n-1)+fabc(n-2);
}
long* exam( int i)
{   long  *a=(long *)malloc(sizeof(long)*i);
    int n=1;
    for(int j=0;j<i;j++)
    {   printf("%d:  ",j+2);
        scanf("%d",a+j);
        fflush(stdin);
        
    }
    for(j=0;j<i;j++)
    {
        while(*(a+j)>fabc(n))
            n++;
        a[j]=fabc(n-1);
        n=1;
    }
    return a;
}
int  main()
{   
    int n;
    long *p;
    printf("1:  ");
    scanf("%d",&n);    
    fflush(stdin);
    p=exam(n);
    for(int i=0;i<n;i++)
    {
        printf("%ld   %ld\n",i+1,*(p+i));
    }
    return 1;
}

学习需要安静。。海盗要重新来过。。
2008-03-14 18:45



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-203414-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.426858 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved