return type name parameters list body return value
הגדרה ושימוש בפונקציה <return type> <name> (<parameters list){ <body> return <value>; } void main(){ … <name> (<values list>); }
#include <stdio. h> #define SIZE 100 void main() { int i, j, min, temp, nums[SIZE]; for (i=0; i<10; i++){ printf ("enter numbern"); scanf ("%d", &nums[i]); } for (i=0; i<SIZE; i++){ min = i; for (j=i+1; j<SIZE; j++) if (nums[j]<nums[min]) min = j; temp = nums[i]; nums[i] = nums[min]; nums[min] = temp; } for (i=0; i<SIZE; i++) printf ("%dn", nums[i]); }
#include <stdio. h> #define SIZE 100 void selection. Sort(int ar[], int size){ int i, min. Ind; for (i=0; i<SIZE; i++){ min. Ind= find. Min. Index(ar, size); swap. Elements(ar, i, min. Ind); } } void main(){ int ar[SIZE]; read. Array. From. User(ar, SIZE); selection. Sort(ar, SIZE); print. Array(ar, SIZE) } יש להשלים את הפונקציות החסרות
ברקורסיה n! חישוב int rec. Factorial(int n){ if(n<=1) return 1; return n*rec. Factorial(n-1); }
רקורסיה ללא מקרה בסיס #include <stdio. h> void star(int n){ printf("*"); star (n-1); } void main(){ star(3); }
הדפסת כוכביות #include <stdio. h> void star(int n){ if (n<=0) return; printf("*"); star (n-1); } void main(){ star(3); }
Merge Sort void merge. Sort(int ar[], int lo, int hi){ if (lo<hi) { int m=(lo+hi)/2; merge. Sort(ar, lo, m); merge. Sort(ar, m+1, hi); merge(ar, lo, m, hi); } }
Merge #define SIZE 100 void merge(int a[], int lo, int m, int hi){ int i, j, k, b[SIZE]; for (i=lo; i<=hi; i++) b[i]=a[i]; i=lo; j=m+1; k=lo; while (i<=m && j<=hi) if (b[i]<=b[j]) a[k++]=b[i++]; else a[k++]=b[j++]; while (i<=m) a[k++]=b[i++]; }
print 1 #include <stdio. h> void print 1(int n){ if (n==0)return; printf ("%dn", n); print 1(n-1); } void main(){ print 1(5); }
print 2 #include <stdio. h> void print 2(int n){ if (n==0)return; print 2(n-1); printf ("%dn", n); } void main(){ print 2(5); }
print 3 #include <stdio. h> void print 3(int n){ if (n==0)return; printf ("%dn", n); print 3(n-1); printf ("%dn", n); } void main(){ print 3(5); }
print 4 #include <stdio. h> void print 4(int n){ if (n==0)return; print 4(n-1); printf ("%dn", n); print 4(n-1); } void main(){ print 4(4); }
חישוב מספר פיבונאצ'י int rec. Fib(int n){ if(n<=1) return n; return rec. Fib(n-1)+ rec. Fib(n-2); }
#include <stdio. h> void move. Disk(int num, char from[], char to[]){ printf ("move disk %d from %s to %sn", num, from, to); } void hanoi (int num. Disks, char first[], char last[], char help[]){ if (num. Disks == 1){ move. Disk(num. Disks, first, last); } else{ hanoi(num. Disks - 1, first, help, last); move. Disk(num. Disks, first, last); hanoi(num. Disks - 1, help, last, first); } } void main(){ hanoi(3, "A", "C", "B"); }
output • • move disk 1 from A to C move disk 2 from A to B move disk 1 from C to B move disk 3 from A to C move disk 1 from B to A move disk 2 from B to C move disk 1 from A to C
- Slides: 24