PDA

Tam Sürümünü Görmek İçin : C'de return komutu ile ilgili


ntxsoft
05/11/2006, 19:19
Geçen dersteyken return leri anlattı hocamız fakat ben tam anlayamadım.
mesela aşağıdaki kodda bi return 0 var birde return product var. return 0 programı sonlandırıyo peki return product ne yapıyo? Ayrıca bir kod vardı sadece returnleri kullanarak aşağıdaki faktoriyel hesabını yapabiliryordu onu bulamadım ama onda sayıyı tutuyordu. Bu return'un görevi nedir tam olarak ?

#include <stdio.h>

int factorial (int n);
int main()
{
int x;
printf("input an integer to find factorial:");
scanf("%d",&x);
printf("factorial of integer: %d\n",factorial(x));
return 0;
}

int factorial (int n)
{
int i, product = 1;
for (i = 2; i <= n; ++i)
product *= i;
return product;
}


Myxomatose
05/11/2006, 21:39
return'un görevi, kullanıldığı fonksiyonun döndüreceği değeri belirlemektir... Örneğin int hede() fonksiyonunda return number kullanırsanız, fonksiyonun kullanıldığı yerde number değeri döndürülecektir.

Ayrıca bahsettiğiniz faktöriyel bulma fonksiyonu, özyinelemeli bir fonksiyondur -recursion functions- ve bazı algoritmalarda işinize çok yarayabilir :)

#include <stdio.h>

int fact(int n);

int main(void) {
printf("5 sayisinin faktoryeli = %d\n", fact(5));
return(0);
}

int fact(int n) {
return (n == 1) ? n : n * fact(n - 1);
}

ntxsoft
05/11/2006, 22:44
int fact(int n) {
return (n == 1) ? n : n * fact(n - 1);
}
şimdi bu fonksiyonda return'un döndürdüğü bu algoritmamı oluyor? (n == 1) ? n : n * fact(n - 1);

Myxomatose
05/11/2006, 22:52
İlgili satırda tekrar fact() fonksiyonunu kullanmamız, fonksiyonumuzun özyineleme kullanılarak hazırlandığını bize gösteriyor... Aslında karşılaştırma satırı olmadan, doğrudan return n * fact(n - 1) de diyebilirdik; ancak böyle bir durumda sonsuz bir döngüye girileceği için kontrol yapısını kullanmamız şart.

ntxsoft
05/11/2006, 23:22
teşekkür ederim. sonunda anladım :)