Java/רקורסיה/תרגילים

מתוך ויקיספר, אוסף הספרים והמדריכים החופשי

רקורסיה פשוטה[עריכה]

הדפסה רקורסיבית[עריכה]

כתבו פונקציה רקורסיבית שתקבל מספר שלם כלשהו (ידוע שאינו שלילי) וסימן (משתנה מטיפוס char), ותדפיס את הסימן כמספר הפעמים שהתקבלו.

פתרון
public static void printer(int n, char c) {
	if(n<=0) return;
	System.out.print(c);
	printer(n-1, c);
}


חזקה[עריכה]

כתבו פונקציה רקורסיבית שתקבל שני מספרים שלמים, ותחזיר את הראשון בחזקת השני. אם מנסים להעלות מספר בחזקת אפס - הפונקציה תחזיר 1. אם מנסים להעלות בחזקה שלילית - הפונקציה תחזיר 0.

פתרון
public static int power(int n, int m) {
	if(m<0) return 0;
	if(m==0) return 1;
	return n * power(n, m-1);
}


אתגר:

האם קיימת דרך להעלות מספר בחזקה בעזרת מספר קטן יותר של פעולות? האם תוכלו לעשות זאת בעזרת שיטה רקורסיבית?
רמז

עבור n זוגי מתקיים , ועבור n אי זוגי,