ABA


"שאלה ברקורסיה שפת c."
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #21429 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 21429
faruz_avi 
חבר מתאריך 27.10.04
11552 הודעות
   17:34   17.09.15   
אל הפורום  
  שאלה ברקורסיה שפת c.  
 
   לא ברור לי תנאי העצירה וגוף הרקורסיה מבחינת לסכום


                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  מכתב nimroder 17.09.15 22:54 1
     חחח ילד נרקומן כובען  17.09.15 23:00 2
  משהו כזה אני חושב... קצת חלוד Bar  23.09.15 02:00 3
  פיתרון רקורסיבי שכן משתמש בלולאה notSoWiseGuy 24.09.15 11:08 4
  קח פתרון עובד ביעלות טובה עם מעטפת barakm 24.09.15 13:12 5

       
nimroder לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 25.9.09
8557 הודעות, 4 פידבק
   22:54   17.09.15   
אל הפורום  
  1. מכתב  
בתגובה להודעה מספר 0
 
   אם n=0
החזר 0
אחרת
אם a=a
תחזיר f(a 1,n-1) 1
אחרת
תחזיר max(f(a 1,n-1),0)

נראה לי משהו כזה
אני מסטול אחי מצטער לא מצליח לחשוב :(

מחר
אני פשוט חייב לזוז


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
כובען  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 2.3.10
24350 הודעות, 21 פידבק
   23:00   17.09.15   
אל הפורום  
  2. חחח ילד נרקומן  
בתגובה להודעה מספר 1
 


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Bar  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 24.3.02
24027 הודעות, 7 פידבק
   02:00   23.09.15   
אל הפורום  
  3. משהו כזה אני חושב... קצת חלוד  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 23.09.15 בשעה 16:16 בברכה, Bar
 

int f(int A||, int n){
if(!n)
return 1;
else{
if(A|n|==A|n-1|)
return (f(A,n-1) + 1);
else return f(A,n-1);
}
}

רק תחליף את ה || בסוגריים מרובעים כמובן...

עריכה: טוב אחרי ניסיון הרצה, זה לא מבצע את מה שרוצים חחח...
לדעתי צריך לבנון כאן פונקציית עזר שהיא תהיה רקורסיבית, בה אתה מחזיק את ה-Max הנוכחי ואת המועמד להיות Max, ורק ככה אפשר לשחק עם זה.


He who makes a beast out of himself,
gets rid of the pain of being a man.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
notSoWiseGuy
חבר מתאריך 24.8.14
108 הודעות
   11:08   24.09.15   
אל הפורום  
  4. פיתרון רקורסיבי שכן משתמש בלולאה  
בתגובה להודעה מספר 0
 
   כמו שבר אמר מעליי, בprototype הנוכחי אני לא רואה איך אפשר לעשות את זה באופן רקורסיבי מלא, אבל הנה פיתרון שהוא רקורסיבי לכל דבר ועניין, והיעילות זהה:

int f(int A, int n) {
int currStreak, nextStreak;
currStreak = nextStreak = 0;
if (n <= 0)
return 0;

for (currStreak = 0; A == A; currStreak )
;

nextStreak = f(A currStreak, n - currStreak);

if (currStreak > nextStreak)
return currStreak;

return nextStreak;
}


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
barakm לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 19.5.08
4642 הודעות, 1 פידבק
   13:12   24.09.15   
אל הפורום  
  5. קח פתרון עובד ביעלות טובה עם מעטפת  
בתגובה להודעה מספר 0
 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>

int fHelper(int a, int n, int max);
int f(int a, int n);

void main()
{
int arr = { 7, 1, 1, 1, 1, 2, 4, 3, 3, 3 };
int n = 10;
int length;
length = f(arr, n);
printf("%d", length);
}

int f(int a, int n)
{
int max = 1;
int length = 1;
fHelper(a, n, &max);
return max;
}

int fHelper(int a, int n, int* max)
{
int length = 1;
if (n == 1)
return 1;
else
{
length = fHelper(a, n - 1, max);
if (a == a)
{
length++;
if (*max < length)
*max = length;
}
else
length = 1;

return length;
}
}


אם משהו לא ברור דבר איתי בפרטי


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net