1条回答 默认 最新
- a5156520 2024-02-09 22:54关注
主要思路应该是先使用循环计算出小于m的Fibonacci数的项数i,然后再使用循环打印m和n之间的所有Fibonacci数。
测试如下:
参考链接:PTA C语言程序设计——斐波那契数列_pta斐波那契数列-CSDN博客 文章浏览阅读3.9k次,点赞3次,收藏10次。习题6-4 使用函数输出指定范围内的Fibonacci数 (20 分)本题要求实现一个计算Fibonacci数的简单函数,并利用其实现另一个函数,输出两正整数m和n(0 https://blog.csdn.net/m0_51393229/article/details/115825224#include <stdio.h> // https://blog.csdn.net/m0_51393229/article/details/115825224 int fib(int n){ // 计算第n项Fibonacci数为多少的递归函数,返回值为第n项Fibonacci数的值 if(n<=2){ return 1; }else{ return fib(n-1)+fib(n-2); } } void PrintFN(int m, int n){ // 输出m项n之间的所有Fibonacci数 int i=1; // Fibonacci数的项数,初始从第一项开始 int count=0; // Fibonacci数标志,为0表示没有Fibonacci数,为1表示有Fibonacci数 int flag=1; // 空格标志,为1表示不需要输出空格,为0表示需要输出空格 while(fib(i)<m){ // 这个循环用于计算出小于m的最大Fibonacci数的项数i,循环结束第i项的Fibonacci数必定大于等于m i++; } while(fib(i)<=n){ // 如果当前项的Fibonacci数小于等于n,则循环输出其中的所有Fibonacci数 if(flag){ // 如果空格标志为1,则打印当前项的Fibonacci数 printf("%d",fib(i)); // 打印当前项的Fibonacci数 count=1; // Fibonacci数标志置1,表示m和n之间有Fibonacci数 flag=0; // 空格标志置0,表示后续打印需要先输出一个空格 }else{ // 如果空格标志为0,则先打印一个空格再打印当前项的Fibonacci数 printf(" %d",fib(i)); } i++; // Fibonacci数的项数指向下一项 } if(count==0){ // 如果Fibonacci数的标志为0,则打印对应的提示信息 printf("No Fibonacci number"); } } int main(void){ int m,n,t; scanf("%d%d%d",&m,&n,&t); // 从输入获取m和n的值,以及需要计算哪一项Fibonacci数的项数t printf("fib(%d) = %d\n",t,fib(t)); // 调用函数fib(),打印第t项的Fibonacci数的值 PrintFN(m,n); // 调用PrintFN(),打印m和n之间的所有Fibonacci数 return 0; }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 Opencv配置出错
- ¥15 模电中二极管,三极管和电容的应用
- ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
- ¥15 气象网格数据与卫星轨道数据如何匹配
- ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
- ¥15 微软账户问题不小心注销了好像
- ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
- ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
- ¥20 关于web前端如何播放二次加密m3u8视频的问题
- ¥15 使用百度地图api 位置函数报错?