چطور میشه از یک سری اعداد که با آرایه دریافت شدن با استفاده از یک تابع برگشتی به طور مثال حاصل ضربشونو حساب کرد...
چطور میشه از یک سری اعداد که با آرایه دریافت شدن با استفاده از یک تابع برگشتی به طور مثال حاصل ضربشونو حساب کرد...
آرایه را با مکان در حال خواندنش به ورودی تابع میدی
مثال :
private long mul(int[] array, int loc = 0)
{
if (loc >= array.Length || loc < 0)
{
//یک پیغتم مناسب بده و از متد خارج شو
}
else if (loc == array.Length-1)
return array[loc];
return array[loc] * mul(array, ++loc);
}
آخرین ویرایش به وسیله wolf_majid : پنج شنبه 26 آبان 1390 در 14:36 عصر دلیل: نشد دستی بنویسم :D
وقتی نوشتم اینجور شده...نتونستم خوب درک کنم اینو... از ریترن آخرشم خطا میگیره...کد HTML:[LTR_INLINE][QUOTE]static void Main(string[] args) { int n = Convert.ToInt32(Console.ReadLine()); int[] a = new int[n]; for (int i = 0; i < n; i++) a[i] = Convert.ToInt32(Console.ReadLine()); int m=0; long z = zarb(a,m); Console.WriteLine(z.ToString()); Console.ReadKey(); } private static long zarb(int [] a, int m) { if (m < 0 || m > a.Length) return 0; return a[m]* zarb(a,++m); } [/QUOTE] [/LTR_INLINE]
static void Main(string[] args)
{
int n = Convert.ToInt32(Console.ReadLine());
int[] a = new int[n];
for (int i = 0; i < n; i++)
a[i] = Convert.ToInt32(Console.ReadLine());
int m = 0;
long z = zarb(a, m);
Console.WriteLine(z.ToString());
Console.ReadKey();
}
//پیش فرض برای ام گذاشتم که دیگه نیازی به مقداردهی پارامتر دوم نباشد
private static long zarb(int[] a, int m=0)
{
//اولا" چرا صفر برگردونه در صورتیکه خطاست
// بعدش اشتباه از من بود به این قسمت نیازی نیست چون این تابع توسط
//برنامه نویس صدا زده می شه نیازی به این ایف ندارد
/*
if (m < 0 || m > a.Length)
return 0;
*/
// ما می خواهیم این ضرب تا زمانی ادامه پیدا کند
//که به آخر آرایه رسیدیم پس
//صدا زدن آرایه را همینجا با این شرط متوقف می کنیم
if (m == a.Length - 1)
return a[m];
return a[m] * zarb(a, ++m);
}