Как судить, стоит ли ставить два дополнительных задания в итерации дорого или устанавливать условие if для проверки другой вещи? здесь я уточняю. вопрос состоит в том, чтобы сгенерировать и напечатать первые n членов последовательности Фибоначчи, где n> = 1. моя машина в C была:
#include<stdio.h>
void main()
{
int x=0,y=1,output=0,l,n;
printf("Enter the number of terms you need of Fibonacci Sequence ? ");
scanf("%d",&n);
printf("\n");
for (l=1;l<=n;l++)
{
output=output+x;
x=y;
y=output;
printf("%d ",output);
}
}
но автор книги «Как решить ее с помощью компьютера» говорит, что она неэффективна, поскольку она использует два дополнительных назначения для одного сгенерированного числа Фибоначчи. он предложил:
a=0
b=1
loop:
print a,b
a=a+b
b=a+b
Я согласен, что это более эффективно, так как все время сохраняет актуальность a и b, и одно назначение генерирует одно число. НО это печатает или поставляет два числа Фибоначчи одновременно. Предположим, вопрос состоит в том, чтобы сгенерировать нечетное количество терминов, что бы мы сделали? Автор предложил поставить условие проверки, чтобы проверить, является ли n нечетным числом. разве мы не потеряем преимущества сокращения количества назначений, добавляя тест if в каждую итерацию?