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 אי זוגי,