习题6-4 使用函数输出指定范围内的Fibonacci数

简介: 本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacci数。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列。

本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0<m≤n≤10000)之间的所有Fibonacci数。所谓Fibonacci数列就是满足任一项数字是前两项的和(最开始两项均定义为1)的数列。


函数接口定义:


int fib( int n );
void PrintFN( int m, int n );


其中函数fib须返回第n项Fibonacci数;函数PrintFN要在一行中输出给定范围[m, n]内的所有Fibonacci数,相邻数字间有一个空格,行末不得有多余空格。如果给定区间内没有Fibonacci数,则输出一行“No Fibonacci number”。裁判测试程序样例:


#include <stdio.h>
int fib( int n );
void PrintFN( int m, int n );
int main()
{
    int m, n, t;
    scanf("%d %d %d", &m, &n, &t);
    printf("fib(%d) = %d\n", t, fib(t));
    PrintFN(m, n);
    return 0;
}
/* 你的代码将被嵌在这里 */


20210526131820254.png

int fib( int n ){
  int i=1,j=1,m=1,k;
  for(k=1;k<=n-2;k++){//递归是否可以(注意超时)
    m=i;
    i=m+j;
    j=m;
  }
  return i;
}
//注意时间是否超时
//格式是否错误
void PrintFN( int m, int n ){
  int i=1,fb,cut=0;
  while(fib(i)<m){i++;}
  if(fib(i)<=n){
    printf("%d",fib(i));cut++;}
  for(i++;fib(i)<=n;i++){
    fb=fib(i);
    if(fb<=n){
      printf(" %d",fb);
      cut++;
    }
  }
  if(cut== 0){
    printf("No Fibonacci number");
  }
}
目录
相关文章
|
6月前
|
机器学习/深度学习 C语言
函数递归与迭代附n的阶乘+顺序打印一个整数的每一位数+求第n个斐波那契数
函数递归与迭代附n的阶乘+顺序打印一个整数的每一位数+求第n个斐波那契数
54 0
|
1月前
|
C语言
输出指定数字前的斐波那契数列
【10月更文挑战第19天】输出指定数字前的斐波那契数列。
28 3
|
6月前
|
C语言
【C语言】输入一个数n,输出从n到n+100的范围内所有的素数,并统计素数的个数
【C语言】输入一个数n,输出从n到n+100的范围内所有的素数,并统计素数的个数
347 0
|
5月前
|
机器学习/深度学习 C语言
每日一数——使用函数求Fibonacci数
每日一数——使用函数求Fibonacci数
|
6月前
习题6-3 使用函数输出指定范围内的完数 (20分)
习题6-3 使用函数输出指定范围内的完数 (20分)
|
6月前
|
存储 弹性计算 运维
打印斐波那契数列
【4月更文挑战第29天】
50 0
|
6月前
|
C++
【PTA】​ L1-009 N个数求和​ (C++)
【PTA】​ L1-009 N个数求和​ (C++)
230 0
【PTA】​ L1-009 N个数求和​ (C++)
wustojc5007输出Fibonacci数列的前n项
wustojc5007输出Fibonacci数列的前n项
46 0
|
C语言
C语言一个判断素数的函数fun,在主函数中计算1000以内所有素数的平均值并输出
C语言一个判断素数的函数fun,在主函数中计算1000以内所有素数的平均值并输出
147 0