Здравствуйте. Подскажите пожалуйста как правильно разбираться в условиях задачи и ее решения путем написания кода. Вот приведу пару примеров.
1.Условие задачи. Определить n-й член числовой последовательности (n>2):
xn=xn–1 + xn–2; x0 = x1 = 1
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
// вычисление n-го члена последовательности
int n; // n>2
int x0, x1, x2;
int i;
// ввести значение n
Console.Write("n = ");
n = Convert.ToInt32(Console.ReadLine());
// начальные присваивания
x0 = x1 = 1;
x2 = x0 + x1;
i = 1;
while (i <= n - 3) // вычисление
{
x0 = x1;
x1 = x2;
x2 = x0 + x1;
i++;
}
Console.WriteLine("{0} ", x2);
}
}
}
Какое значение имеет тут переменная i ? Почему ей присваивается значение 1? И почему далее в цикле while, i <= n-3? Откуда вообще это n-3? В условиях же этого нету.
Почему x1 = x2, если х2 = х0 + х1? Типа x0 = 0?
Может есть какие то тут математические корни которые мы проходили в школе, и они просто переведены в программу?
2.Условие задачи. Вычислить значения числа π, используя формулу:
Определить, какое количество слагаемых нужно для определения числа π с точностью 7 знаков после запятой.
Pi/4 = 1 - 1/3+1/5 - 1/7+1/9-...
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication3
{
class Program
{
static void Main(string[] args)
{
// вычислить значение числа Пи
double pi; // результат
int denom; // знаменатель
int sign; // переменная, изменяющая знак числа + на -, и наоборот
double t; // дополнительная переменная - текущая точность
const double eps = 0.0000001; // точность 7 знаков после запятой
int k; // количество слагаемых для получения заданной точности
// начальные приготовления
k = 0;
pi = 0;
denom = 1;
sign = 1;
t = 1.0 / denom * sign;
// цикл while - вычисление
while (t > eps)
{
pi = pi + 4 * t * sign;
sign = -sign; // изменить знак
denom += 2; // изменить знаменатель
t = 1.0 / denom;
k++; // увеличить на 1 количество слагаемых
}
// вывод результата
Console.WriteLine("Pi = {0}", pi);
Console.WriteLine("k = {0}", k);
}
}
}
Здесь вообще ничего не пойму. Зачем столько переменных, почему такие значения переменным присваивается? Почему такое решение?
Где взять ответы на все эти вопросы, чтобы все на пальцах разъяснили?. Или это все как то можно найти в учебниках по математике?