计算n的阶乘
递归
//使用递归计算n的阶乘 #include<stdio.h> int Jiecheng(int n) { if (n<=1) { return 1; } else { return n * Jiecheng(n - 1); } } int main() { int n = 0; scanf("%d", &n); int ret = Jiecheng(n); printf("%d", ret); return 0; }
红色的线是在调用,蓝色的线是返回值。
通过以上的图片可以更加清晰的看出递归的执行过程。
循环
int Jiecheng(int n) { int count = 1; while (n>1) { count = count * n; n--; } return count; } int main() { int n = 0; scanf("%d", &n); int ret = Jiecheng(n); printf("%d", ret); return 0; }
求第n个斐波那契数。(不考虑溢出)
递归
#include<stdio.h> int Fib(int n) { if (n>=3) { return Fib(n - 1) + Fib(n - 2); } else { return 1; } } int main() { int n = 0; scanf("%d", &n); int ret = Fib(n); printf("%d", ret); return 0; }
循环
#include<stdio.h> int Fib(int n) { int a = 1; int b = 1; int c = 1; while (n>2) { c = a + b; a = b; b = c; n--; } return c; } int main() { int n = 0; scanf("%d", &n); int ret = Fib(n); printf("%d", ret); return 0; }