Member 14122005 Ответов: 4

Напишите рекурсивную функцию sumrecursive (), чтобы найти сумму первых n натуральных чисел.


Write a recursive function sumRecursive() to find the sum of first n natural numbers.

Let us say S(n) is sum of first n natural numbers. It can be defined as a mathematical recursive formula as follows:
S(n) = 1 if (n == 1) (Because 1 is the first natural number)
S(n) = n + S(n - 1) (Sum of first n natural numbers is n + Sum of first n - 1 natural numbers)



==============================================================================
Compilation Errors

warning in SumOfNaturalNum1.c, Line No : 1
 S(n) = n + S(n - 1);
 ^
 data definition has no type or storage class


warning in SumOfNaturalNum1.c, Line No : 1
 type defaults to 'int' in declaration of 'S' [-Wimplicit-int]


warning in SumOfNaturalNum1.c, Line No : 1
 parameter names (without types) in function declaration


Error in SumOfNaturalNum1.c, Line No : 1
 function 'S' is initialized like a variable


Error in SumOfNaturalNum1.c, Line No : 1
 S(n) = n + S(n - 1);
        ^

============================================================================

Что я уже пробовал:

Correct/Complete the Code :


#include <stdio.h>
#include "SumOfNaturalNum1.c" //anyone please tell me the logic to write in "SumOfNaturalNum1.c"
void main() {
	int n;
	printf("Enter a natural number : ");
	scanf("%d",&n);
	if (n > 0)
		printf("The sum of first %d natural numbers : %d\n", n, sumRecursive(n));
	else
		printf("Invalid Number\n");
}

Stefan_Lang

Вы не показали код, который на самом деле вызывает проблемы: код, содержащийся в файле "SumOfNaturalNum1.c".

Код, который вы показали, имеет только одну проблему. что вы включаете файл C!

4 Ответов

Рейтинг:
8

Member 14122005

#include <stdio.h>
#include "SumOfNaturalNum1.c"
void main() {
	int n;
	printf("Enter a natural number : ");
	scanf("%d",&n);
	if (n > 0)
		printf("The sum of first %d natural numbers : %d\n", n, sumRecursive(n));
	else
		printf("Invalid Number\n");
}






наконец, я получил ответ...
"SumOfNaturalNum1.c

==================================================================
int sumRecursive(int number)
{
	if(number==0)
	return 0;
	else
	return number+sumRecursive(number-1);
}


Рейтинг:
31

OriginalGriff

Сначала давайте разберемся с "ошибками компиляции": вы не можете просто скопировать свой вопрос домашнего задания в a .C исходный файл и скомпилировать его - это никогда, никогда не будет работать! Вопрос заключается в английском описании того, что ваш учитель требует от кода, чтобы сделать, это до вас, чтобы прочитать инструкции и написать код для выполнения этой функции. Поэтому начните с удаления "SumOfNaturalNum1.c" #include и добавьте сигнатуру функции в свой основной код.c:

#include <stdio.h>

int sumRecursive(int n);

void main() 
    {
    int n;
    printf("Enter a natural number : ");
    scanf("%d",&n);
    if (n > 0)
    	printf("The sum of first %d natural numbers : %d\n", n, sumRecursive(n));
    else
    	printf("Invalid Number\n");
    }
Затем создайте саму функцию в конце файла:
int sumRecursive(int n)
    {
    ...
    return result;
    }
Теперь все, что вам нужно сделать, это заполнить функцию, следуя инструкциям, которые вам были даны.


CPallini

С какой стати ты его исключил 0? :-D
(Я вижу, что это слепо исключается учителем ОП).

OriginalGriff

Вероятно, потому, что это зависит от того, какое определение вы используете!
https://en.wikipedia.org/wiki/Natural_number

CPallini

Я знаю, но это несправедливо :-)
Кстати, Вирт назвал факториальное классическое упражнение "плохим примером" рекурсии. Мне любопытно узнать, что он думает об этом упражнении.

OriginalGriff

Планируете открыть SPCZ?

(Общество по предотвращению жестокого обращения с нулями)

CPallini

Нет необходимости в такой вещи. Ноль берет свое возмездие.

Stefan_Lang

По моему опыту, это не требует никакой мести.

CPallini

По моему опыту, Зеро мстит. Так и сейчас: ноль есть разделительный нам.

Maciej Los

5ed!

Рейтинг:
28

CPallini

Логика рекурсивного (скажем) sum функция уже дана в тексте упражнения. Просто реализация отсутствует.
Итак, в чем именно заключается ваша проблема с такой реализацией?
Если вы не можете написать рекурсивную функцию, то загляните на эту страницу: C++ Recursion - Рекурсивная Функция[^].
С другой стороны, если вы не можете написать функцию вообще, то посмотрите на карьеру в управлении проектами.


OriginalGriff

Ай! Дат Наааасты! :смеяться:

Maciej Los

5ed!

CPallini

Спасибо!

CHill60

"тогда взгляните на карьеру в управлении проектами".: все еще смеясь:

Рейтинг:
0

Patrice T

Цитата:
ошибка компиляции

Вы забыли показать нам исходный код SumOfNaturalNum1.c, так что никто не может помочь исправить то, что вы сделали.
Цитата:
Исправьте/заполните код

Поскольку проблема имеет простое решение с умножением и делением, цель состоит в том, чтобы заставить вас работать/тренироваться на рекурсии. Если мы просто делаем это для вас, это плохая услуга, которую мы вам оказываем, потому что вы ничему не учитесь, это противоречит цели домашнего задания.

Мы не делаем вашу домашнюю работу.
Домашнее задание не предназначено для проверки ваших навыков просить других людей сделать вашу работу, оно предназначено для того, чтобы заставить вас думать и помочь вашему учителю проверить ваше понимание курсов, которые вы прошли, а также проблем, которые вы испытываете при их применении.
Любая ваша неудача поможет учителю выявить ваши слабости и наметить меры по исправлению положения.
Любая ваша неудача поможет вам узнать, что работает, а что нет, это называется "методом проб и ошибок".
Так что попробуйте, перечитайте свои уроки и приступайте к работе. Если вы застряли на конкретной проблеме, покажите свой код и объясните эту точную проблему, мы можем помочь.