2014-12-03 3 views
0

У меня есть небольшая проблема на моей домашней работе здесьТестирование рекурсивные функции - C

мне просто нужно написать рекурсивную функцию, чтобы проверить это соотношение

f(x,y)=x if y==1 

иначе

f(x,y) = x + f(x,y-1) 

Вот мой источник, я не могу заставить его правильно распечатывать.

Обратите внимание, что у меня есть пользователь, который вводит X и Y для проверки.

#include <stdio.h> 
int f (int x,int y); 
int main (void) 
{ 
    int x, y, z; 
    printf ("\nEnter x: "); 
    scanf ("%d", &x); 
    printf ("\nEnter y: "); 
    scanf ("%d", &y); 
    x=f(x,y); 
    return 0; 
} 

int f (int x,int y) 
    { 
    if (y==1) 
    { 
    return x; 
    } 
    else 
    { 
    return (x + f(x,y-1)); 
    } 
} 
+0

Ваш код не имеет смысла. Ваша функция принимает три параметра, но вы пропускаете только два. Ваш прототип (в основном) задается * после * вызова функций. Переместите прототип выше основного. И, что хуже всего, ваша «рекурсивная» функция никогда не называет себя *! – ooga

+0

Где вы использовали рекурсию? –

+0

Функция f должна называть себя основной, но я также не уверен, как это сделать. – csheroe

ответ

0

Ваша рекурсивная функция должна выглядеть следующим образом:

#include<stdio.h> 

int main() { 
    int i = f(5,4); 
    printf("%d\n",i); 
    return 0; 
} 
int f (int x,int y) 
{ 
    if (y==1) 
    { 
    return x; 
    } 
    else 
    { 
    return (x + f(x,y-1)); 
    } 
} 
+0

См. Комментарий @WhozCraig выше о 'y <1' –

+0

@WeatherVane Для данной функции, если это нужно сделать с помощью рекурсии, я думаю, что это способ сделать это – Gopi

+1

Согласовано, но сколько у вас есть возможность рекурсии, когда 'y == 0'? –