#include <iostream>
using namespace std;
int main () {
int n;
cin >> n;
int arr[n];
arr[0] = arr[1] = 1;
for (int i = 2; i < n; i++){
arr[i] = arr[i-1] + arr[i-2];
}
for (int i = 1; i <= n; i++){
if (i==arr[i])
cout <<"F";
else
cout <<"f";
}
return 0;
}
此程序必须采用(整数),然后打印由大写和小写字母'F','f'组成的名称。名称中的字母从1到n编号。从1到n它将搜索第i个数字是否在Fibonacci系列中它将打印'F'否则它将打印'f'。
I.E输入:8个预期输出:FFFfFffF(从1到n)我的输出:FFFfffff
我试图这样做,但我陷入了第五次循环迭代。
答案 0 :(得分:0)
作为评论中的状态,你的情况是错误的:
void fibo(int n) {
std::vector<int> arr(n); // Vector instead of VLA.
arr[0] = arr[1] = 1;
for (int i = 2; i < n; i++){
arr[i] = arr[i-1] + arr[i-2];
}
for (int i = 1; i <= n; i++){
if (std::find(arr.begin(), arr.end(), i) != arr.end()) { // Does arr contains i
std::cout << "F";
} else {
std::cout << "f";
}
}
}
当fibo正在增加序列时,你甚至可以摆脱数组:
void fibo(int n) {
int a = 1;
int b = 1;
for (int i = 1; i <= n; i++){
if (i == b)
{
int c = a + b;
a = b;
b = c;
std::cout <<"F";
} else {
std::cout <<"f";
}
}
}
答案 1 :(得分:0)
我快速对此进行了编码,但它完成了工作。您应该尝试正确格式化代码(空格和注释)作为开始。如果您正在接受用户输入,那么您需要非常小心他们提供您期望的内容。在上面的代码中,我可以传入一个负数,字符串或我选择的任何内容,其余代码将执行!
您的代码也需要开始在table.useAllAvailableWidth()
上循环,因为Fibonacci序列也是为此值定义的。
i = 0