Я написал следующий код для генерации суммы чисел, например, если я вхожу в 10, он будет генерировать сумму, равную 10 + 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 + 0: 55, который отлично работает.Функция рекурсии возвращает неправильное значение
public int GenerateSum(int num)
{
if (num <=0)
{
return 0;
}
int temp = num + GenerateSum(num - 1);
return temp;
}
Теперь я изменил этот код, чтобы генерировать разница, например, если я ввожу число сказать, 10 он будет генерировать это разница как 10-9-8-7-6-5-4-3-2-1 -0 выход: -35
public int GenerateDifference(int num)
{
if (num <= 0)
{
return 0;
}
int temp = num - GenerateDifference(num - 1);
return temp;
}
Теперь, когда я бегу GenerateDifference (10) он возвращает мне выход 5. Для GenerateDifference (100) он дает мне выход 50, который тоже неправильно. Если он работает на сумму, он должен работать и на разницу (если я ошибаюсь, пожалуйста, поправьте меня). Любая помощь или руководство по этому вопросу.?
Проверьте требуемый приоритет/порядок операций. Вы вычисляете 10- (9- (8- (7- (6- (5- (4- (3- (2- (1-0))))))))). –
10- (9- (8- (7- (6- (5- (4- (3- (2-) 6-5-4-3-2-1-0 –
Ну, «разница между всеми числами от 0 до n» просто не имеет смысла, как «сумма всех чисел от 0 до n». –