第八章 递归与循环

来源:互联网 发布:最喜欢的一句话 知乎 编辑:程序博客网 时间:2024/06/10 21:09

1.1 递归

例题1 N!

int fac(int n) {
int f;
if (n < 0) {
printf("input error!\n");
}
else {
if((n == 0) || (n == 1)) {
f = 1;
} else {
f = n * fac(n-1);
}
}
return (f);
}

int main() {
int f = 0, y = 0;
int n = 0;
printf("please input integer number: ");
scanf("%d", &n);
y = fac(n);
printf("%d! is %d", n, y);
return 0;
}


运行结果如下图所示:


例题2 斐波拉契数列

//Fibonacci sequence
int fibo(int n) {
if ((n == 0) || (n == 1)) {
return n;
} else {
return fibo(n-1) + fibo(n-2);
}
}

int main() {
int y = 0;
int n = 0;
printf("Please input the number item of fibonacci sequence: ");
scanf("%d", &n);
for(int i = 0; i < n+1; i++) {
printf("%d ", fibo(i));
}
return 0;
}


运行结果如下图所示:


1.2 循环

例题1

int main() {
int x = 10;
int y = 10;
int i;
for(i = 0; x > 8; y = i++) {
printf("x: %d, y: %d, i: %d\n", x--, y, i);
printf("x: %d, y: %d, i: %d\n\n", x, y, i);
}
return 0;
}


其运行结果如下图所示:


例题2

统计每个ASCII字符出现的次数。

void histogram(char* src, int* hist) {
int i;
while (*src != '\0') {
hist[*src++]++;
}
}

int main() {
int i;
char *src = "aaaabvdefghjkeoawr123890e";
int hist[256] = {0};
histogram(src, hist);
for(i = 0; i <= 255; i++){
printf("hist[%d]: %d, \n", i, hist[i]);
}
return 0;
}


0 0
原创粉丝点击