1
菲波那切数列:求第N个数列的值
# include & lt; stdio.h> long long  Fib (int , n) { ,,,return (n ==, 1, | |, n ==, 2), ?, 1,:, Fib (n 安康;1),+,Fib (n 安康;2); } int main () { ,printf (" % ld \ n”, Fib (40)); }
C: \ MinGW \ project> gcc 化c99 C C: \ MinGW \ project> a.exe 102334155
递归求出年龄:
每一个人比前面一个人大2岁,最前面那个人是10岁,求第n个人的年龄
# include & lt; stdio.h> int 递归(int n) { ,,,int 我; 如果(n==1),我=10; else ,,,, i=递归(n - 1) + 2; return 我; } int main () { printf ("=age % d”,递归(20); }
# include & lt; stdio.h> long num=0; void 河内(int n, char char B, char C){//理解为:有n个盘子在上,通过B,移到C 如果(n==1) printf("第% ld步:\ t % c →, % c \ n”, + + num, A, c); 其他{ 河内(n - 1 A, C, B),, printf("第% ld步:\ t % c →, % c \ n”, + + num, A, c),, 河内(n - 1, B, C); } } int main () { int n=0; printf(“请输入盘子的个数\ n”); scanf (“% d”,和n); printf("盘子的移动方向如下\ n”); ,,,河内(n,‘“,“B”,“C”),, }
chunli@ubuntu:美元/tmp, cat sum.c # include & lt; stdio.h> int 和(int n) { if (n ==1) return 1; 其他的 return n  +,总和(n - 1); } int main () { printf (" sum =% d \ n”,总和(10),); } chunli@ubuntu:美元/tmp, gcc sum.c ;。/a.out sum 55=
求1到n之间质数的和
# include & lt; stdio.h> int isprime (int n, int 键)//判断n是否为素数,是返回1,不是返回0 { if (n & lt;, 2) return 0; if (n ==,键) return 1; if (n %, key ==, 0) return 0;//除了1和他本身以外,有余数,证明不是素数,返回假 其他的 return isprime (n, key +, 1); } int 和(int n)//求1到n之间所有素数之和 { if (n ==, 1) return 1; 其他的 { if (isprime (n, 2)) return , n +,总和(n 作用;1);//如果n为素数,递归求和 其他的 return 和(n 作用;1);//如果n不为素数,只递归,不求和 } } int main () { printf(" 1,,, 2,质数和,% d \ n”,和(2)); printf(" 1,,, 3,质数和,% d \ n”,和(3)); printf(" 1, -, 10质数和,% d \ n”, sum (10)); } chunli@ubuntu:/tmp,美元。/a.out 1,,,2,质数和,3, 1,,,3,质数和,6, 1,,,10质数和,18C递归经典实例