С помощью рекурсивной функции вычислить сумму - C (СИ)

  1. Дано натуральное n, действительные a1,a2,...,an.С помощью рекурсивной функции вычислить сумму a1*a2+a2*a3+...+an-1*an. Программный код через printf и scanf


textual

Код к задаче: «С помощью рекурсивной функции вычислить сумму - C (СИ)»

#include <stdio.h>
 
int Sum(int *A, int n, int i)
{
    if (i == (n-1))
        return A[i]*A[i+1];
    else
        return A[i]*A[i+1]+Sum(A,n,i+1);
}
 
int main(int argc, char* argv[])
{
    int Arr[6]={0,1,2,3,4,5};
    printf("%d\n",Sum(Arr,5,1));
    return 0;
}

СДЕЛАЙТЕ РЕПОСТ

7   голосов, оценка 4.000 из 5



Похожие ответы
  1. Подскажите, пожалуйста, как можно найти индекс минимального элемента массива с помощью указателя?

  1. Помогите,пожалуйста,решить задачу. Найти самое короткое слово и вставить его, если возможно, в начало самой короткой строки с помощью указателей. Исходный массив строк ввести с помощью инициализации.

  1. Здравствуйте. Нужно найти сумму ряда с помощью рекуррентного выражения.Можете,пожалуйста,проверить правильность кода.C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #include #include #include main() {    int n=0;    float a,s,x=2;    double e=1e-4;    clrscr();    a=x;    s=a;    while(a>e)    {       a*=(x/(n+1));       s+=a;       n++;    }    printf(" \n s=%.5f,kolichestvo elementov=%d",s,n-1);    getch();    return 0; }Добавлено через 15 минут или n++ нужно в начале цикла ставить?

  1. Произведите конкатенацию имени и фамилии пользователя с помощью операторов цикла, т.е. без помощи функции strcat_s(). Возможно ли это и как сделать? Ибо у меня выходит не очень: C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include #include #include   #define N 79   int main (void)  {     char str1[N+1], str2[N+1];     int i, j=-1;       printf("\n\t Print 1 string of characters: ");      gets_s(str1, N);       printf("\t Print 2 string of characters: ");         gets_s(str2, N);       str1[(strlen(str1))]=' ';     for (i=(strlen(str1)+1); i<(strlen(str1)+strlen(str2)); i++)     {         j++;         str1[i] = str2[j];     }     printf("\n\t Result after concatenation: %s\n", str1);      printf("\n Press any key: ");     _getch();     return 0;  }А в итоге: Кликните здесь для просмотра всего текста

  1. Не могу решить данное задание, как сделать с вложенными циклами?

  1. Добрый день. Как корректно очистить память, которая была выделена с помощью malloc? Приведу код:C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 void print_array(int *a, int n) {     for(int i = 0; i < n; i++) {         printf("%d", *(a+i));     }     printf("\n"); }   int main(int argc, char **argv) {     printf("Привет\n");     //наш массив     int *a;     //размер массива     int n;     //введём размер массива     scanf("%d", &n);     //выделим динамически память под массив     a = (int*) malloc(n * sizeof(*a));         for(int i = 0; i < n; i++) {         *(a+i) = i;     }         print_array(a, n);        free(a);       print_array(a, n);     return 0; }Если начать работать с программой, то мы получим следующее:Привет 4 0123 0023 Вопрос: почему после free(a) выводится 0023? Что случилось со значением "1", почему не изменились другие значения?

  1. Здравствуйте форумчане, столкнулся с такой проблемой. Запись в файл с помощью fwrite. Нужно записать буфер в файл.C1 2 3 4 5 6 7 8 9 10 11 12 short buffer[80]; int i =0;   FILE* fd("file/one.txt");   for (i = 0; i < 80; i++) {      buffer[i] = i; }       fwrite(buffer, 80 * sizeof(short), 1, fd);Запись осуществляется без ошибок, но не корректно.

  1. Всем привет,как можно вводить сразу целую строку и с помощью strtok разбить на слова,как нибудь через двойной массив?(ниже код сортирует слова по алфавиту)C1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40  #include #include #include #include void sort(char *words[],int size) {       int n,m,code;     char *temp;     for(n=1; n0) {                 temp=words[m];                 words[m]=words[m+1];                 words[m+1]=temp;             }         }     printf("\nsort:\n");     for (n = 0; n < size; n++)         printf("%s ",words[n] );     }       int main() {   char *words[5];   char word[5][50]; int i; for (i=0;i<5;i++){    printf("slovo:");     gets(word[i]);     words[i]=word[i]; }       int size =sizeof(words)/sizeof(char*);     sort(words,size);   }

  1. Пусть для целых неотрицательных чисел n, m разрешены операции нахождения последующего числа (n + 1) и предыдущего числа n-1 (n > 0). С помощью рекурсивных функций определить операции нахождения суммы (n + m), разности (n - m), умножения (n × m), возведения в степень n ^ m (n > 0).

  1. С помощью рекурсивной функции вычислить сумму элементов одномерного массива. Есть примеры но только на с++ =(