如何解决你如何在两个整数之间的范围内找到斐波那契数?
我正在创建一个 C++ 代码来输出两个数字之间的斐波那契数列。如果两个整数之间没有斐波那契数,我的部分代码将输出。例如,如果用户输入 9 和 12,代码将输出“无”。但是如果整数是 0 到 10,它会输出 0,1,2,3,5,8。以下是我目前的代码。
如果给定范围内没有任何斐波那契数字,我将如何修复此代码以输出?现在,此代码将读取(范围为 9 到 12),
NoneNoneNoneNoneNoneNone
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
int high,low;
cout<< "Enter two integers: ";
cin>>low>>high;
int i=0;
int f1=0,f2 = 1,f3 = 1;
while (f1 <= high)
{
f1 = f2;
f2 = f3;
f3 = f1 + f2;
i++;
if (f1>=low && f1<=high){
cout<<setw(10)<<f1;
}
else{
cout<<"None";
}
if (i != 0 && ((i % 6) == 0)){
cout<<endl;
}
}
return 0;
}
解决方法
所以,您对斐波那契数的计算是正确的。
但你需要解耦。
- Fibaoncci 数的计算
- 范围检查然后打印,如果在范围内
- 检查,是否打印了一些东西。如果没有,则显示消息
您还应该使用正确的数据类型。斐波那契数增长迅速。因此,强烈建议使用像 IF OBJECT_ID('dbo.TBL_TEMP') IS NOT NULL
DROP TABLE TBL_TEMP
DECLARE @sqlquery AS NVARCHAR(MAX)
DECLARE @PivotColumns AS NVARCHAR(MAX)
SELECT @PivotColumns= COALESCE(@PivotColumns + ',','') + QUOTENAME(CONVERT(DATE,PROJECTFORECASTINVOICEDATE))
FROM [dbo].[ProjForecastSalesStaging]
WHERE [MODELID] = 'Cash flow'
GROUP BY CONVERT(DATE,PROJECTFORECASTINVOICEDATE)
ORDER BY CONVERT(DATE,PROJECTFORECASTINVOICEDATE) ASC
SET @sqlquery =
N'SELECT [PROJECTID],[MODELID],[PROJECTLINEPROPERTYID],' + @PivotColumns + '
INTO TBL_TEMP
FROM [dbo].[ProjForecastSalesStaging]
PIVOT ( SUM(AMOUNT)
FOR PROJECTFORECASTINVOICEDATE IN (' + @PivotColumns + ') ) AS Q
WHERE Q.[MODELID] = ''Cash flow''
GROUP BY [PROJECTID],' + @PivotColumns + ' '
EXEC sp_executesql @sqlquery
Select TBL_TEMP.*
from TBL_TEMP WHERE PROJECTLINEPROPERTYID='011400'enter image description here
这样的 64 位数据类型。
而且,即便如此,对于 64 位值,也只有 93 个可能的斐班奇数。 (比奈公式)。
一个可能的灵魂可能是这样的:
unsigned long long
在启用 C++17 的情况下编译。分别设置编译器标志。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。