C 【函数 递归】

来源:互联网 发布:linux mysql 源码安装 编辑:程序博客网 时间:2024/05/22 07:52
/* 1.函数一定要声明,这符合代码的严谨性(但是返回值是int类型的函数不需要声明也不会报错,但最好不要这么做) 2.一个函数在它的函数体内调用它自身称为递归调用。为了防止递归调用无终止地进行,必须在函数内有终止递归调用的手段    递归函数构成条件     - 自己调用自己     - 存在一个条件能够让递归结束     - 问题的规模能够缩小       总的来说可以写成if else的形式,if后面跟终止执行的条件或其他情况,而else后面跟n-1时的情况。 */#include <stdio.h>/** 求a的n次方 */int an(int a, int n);int main(int argc, const char * argv[]){        printf("请输入a,n,求a的n次方\n");    int n = 0;    int a = 0;    scanf("%d%d", &a, &n);    printf("%d的%d次方为:%d\n", a, n, an(a, n));        return 0;}int an(int a, int n){    // a的1次方等于他本身    if (n == 1)    {        return a;    } else if (n == 0) {        return 1;    } else {        return an(a, n - 1) * a;    }}


/* 年龄递归 NO.1 age1 = 10; NO.2 age2 = 10 + 2 = 12; NO.3 age3 = 10 + 2 + 2 = 12 + 2 = 14; ... ... */#include <stdio.h>int age(int n);int main(int argc, const char * argv[]) {        printf("请输入人的编号:\n");    int n = 0;    scanf("%d", &n);    printf("第%d个人%d岁\n", n, age(n));        return 0;}int age(int n){    if (n == 1) {        return 10;    } else {        return age(n - 1) + 2;    }}

/** 问题描述 三个正方形a、b、c a的边长是b的二倍 b的变长是c的二倍 c的边长为1 求a的面积 */#include <stdio.h>int bianchang(int c);int main(int argc, const char * argv[]) {        int c = bianchang(3);    int s = c * c;    printf("a的面积为%d\n", s);        return 0;}int bianchang(int c){    if (c == 1) {        return 1;    } else {        return bianchang(c - 1) * 2;    }}


/** Hanoi塔问题<p> 假设有三个命名为 A B C 的塔座 ,在塔座A上插有n个直径大小不相同,由小到大编号为1 ,2 ,3 ,··· ,n的圆盘,要求将A座上的圆盘移至塔座C,并按同样的顺</p><p> 序叠排,圆盘移动必须遵守下列规则:</p><p> 1:每次只能移动一个圆盘 2:圆盘可以插在任意一个塔座上 3:任何时刻都不能将一个较大的圆盘放在一个较小的圆盘上</p> */#include <stdio.h>void hanoi(int n, char a, char b, char c);void moves(char p, char q);int main(int argc, const char * argv[]) {        hanoi(3, 'A', 'B', 'C');        return 0;}void hanoi(int n, char a, char b, char c){    if (n == 1) {        moves(a, c);    } else {        hanoi(n - 1, a, c, b);        moves(a, c);        hanoi(n - 1, b, a, c);    }}void moves(char p, char q){    printf("%c ---> %c\n", p, q);}

1 0
原创粉丝点击