חידה בשפת C

clocker

New member
חידה בשפת C

מה עושה הפונקציה הבאה ?
int Sankari(int n) { int i,k=0; for (i=1;n>0;i+=2) { if (k+i>n) return (i-1)/2; else k+=i; } return 0; }​
 

clocker

New member
../images/Emo127.gif + הערה

אם n חיובי, הפונקציה אכן מחזירה את שורשו אחרת, מחזירה 0. מיותר לציין שזה ערך שלם, היות ומדובר במשתנה מסוג int שלא יכול להכיל מספרים שאינם שלמים.
 

mor48

New member
גם וגם

ב K מקבלים את הריבועים (K+1)^2 - K^2 = 2K+1 dd כאשר K גדול מ N ההפרש בין K ל K הקודם הוא i אבל i שווה ל 2K+1 לכן הפונקציה מחזירה את הערך השלם של שורש N.
 
למעלה