C语言基础--循环 递归打印乘法表

for循环打印乘法表:

#include <stdio.h>
//  for循环打印乘法表
int main(int argc, const char * argv[]) {
    //矩形
    for (int i = 1; i <= 9; i++) {
        for (int j = 1; j <= 9; j++) {
            printf("%i * %i = %i	", j, i, i * j);
        }
        printf("
");
    }
    printf("
");    

    //尖尖朝上
    for(int i = 1; i <= 9; i++){
        for (int j =1; j <= i; j++) {
            printf("%i * %i = %i	", j, i, i * j);
        }
        printf("
");
    }
    printf("
");    

    //尖尖朝下
    for (int i = 1; i <= 9; i++) {
        for (int j = i; j <= 9; j++) {
            printf("%i * %i = %i	", i, j, i * j);
        }
        printf("
");
    }  
    return 0;
}
/*
 输出结果:
 1 * 1 = 1  2 * 1 = 2   3 * 1 = 3   4 * 1 = 4   5 * 1 = 5   6 * 1 = 6   7 * 1 = 7   8 * 1 = 8   9 * 1 = 9
 1 * 2 = 2  2 * 2 = 4   3 * 2 = 6   4 * 2 = 8   5 * 2 = 10  6 * 2 = 12  7 * 2 = 14  8 * 2 = 16  9 * 2 = 18
 1 * 3 = 3  2 * 3 = 6   3 * 3 = 9   4 * 3 = 12  5 * 3 = 15  6 * 3 = 18  7 * 3 = 21  8 * 3 = 24  9 * 3 = 27
 1 * 4 = 4  2 * 4 = 8   3 * 4 = 12  4 * 4 = 16  5 * 4 = 20  6 * 4 = 24  7 * 4 = 28  8 * 4 = 32  9 * 4 = 36
 1 * 5 = 5  2 * 5 = 10  3 * 5 = 15  4 * 5 = 20  5 * 5 = 25  6 * 5 = 30  7 * 5 = 35  8 * 5 = 40  9 * 5 = 45
 1 * 6 = 6  2 * 6 = 12  3 * 6 = 18  4 * 6 = 24  5 * 6 = 30  6 * 6 = 36  7 * 6 = 42  8 * 6 = 48  9 * 6 = 54
 1 * 7 = 7  2 * 7 = 14  3 * 7 = 21  4 * 7 = 28  5 * 7 = 35  6 * 7 = 42  7 * 7 = 49  8 * 7 = 56  9 * 7 = 63
 1 * 8 = 8  2 * 8 = 16  3 * 8 = 24  4 * 8 = 32  5 * 8 = 40  6 * 8 = 48  7 * 8 = 56  8 * 8 = 64  9 * 8 = 72
 1 * 9 = 9  2 * 9 = 18  3 * 9 = 27  4 * 9 = 36  5 * 9 = 45  6 * 9 = 54  7 * 9 = 63  8 * 9 = 72  9 * 9 = 81 

 1 * 1 = 1
 1 * 2 = 2  2 * 2 = 4
 1 * 3 = 3  2 * 3 = 6   3 * 3 = 9
 1 * 4 = 4  2 * 4 = 8   3 * 4 = 12  4 * 4 = 16
 1 * 5 = 5  2 * 5 = 10  3 * 5 = 15  4 * 5 = 20  5 * 5 = 25
 1 * 6 = 6  2 * 6 = 12  3 * 6 = 18  4 * 6 = 24  5 * 6 = 30  6 * 6 = 36
 1 * 7 = 7  2 * 7 = 14  3 * 7 = 21  4 * 7 = 28  5 * 7 = 35  6 * 7 = 42  7 * 7 = 49
 1 * 8 = 8  2 * 8 = 16  3 * 8 = 24  4 * 8 = 32  5 * 8 = 40  6 * 8 = 48  7 * 8 = 56  8 * 8 = 64
 1 * 9 = 9  2 * 9 = 18  3 * 9 = 27  4 * 9 = 36  5 * 9 = 45  6 * 9 = 54  7 * 9 = 63  8 * 9 = 72  9 * 9 = 81 

 1 * 1 = 1   1 * 2 = 2   1 * 3 = 3   1 * 4 = 4   1 * 5 = 5   1 * 6 = 6   1 * 7 = 7   1 * 8 = 8   1 * 9 = 9
 2 * 2 = 4   2 * 3 = 6   2 * 4 = 8   2 * 5 = 10  2 * 6 = 12  2 * 7 = 14  2 * 8 = 16  2 * 9 = 18
 3 * 3 = 9   3 * 4 = 12  3 * 5 = 15  3 * 6 = 18  3 * 7 = 21  3 * 8 = 24  3 * 9 = 27
 4 * 4 = 16  4 * 5 = 20  4 * 6 = 24  4 * 7 = 28  4 * 8 = 32  4 * 9 = 36
 5 * 5 = 25  5 * 6 = 30  5 * 7 = 35  5 * 8 = 40  5 * 9 = 45
 6 * 6 = 36  6 * 7 = 42  6 * 8 = 48  6 * 9 = 54
 7 * 7 = 49  7 * 8 = 56  7 * 9 = 63
 8 * 8 = 64  8 * 9 = 72
 9 * 9 = 81
 */ 

递归替换for循环:

#include <stdio.h> 

void printfMultiple(int);
void printfMultiple1(int);
void printfMultiple2(int);
void replaceFor(int,int);

int main(int argc, const char * argv[]) {   
    /*
     int i
     i 从 1 加到 9
     输出 i * 1 ~ 9 的结果
     i == 0时退出
     */
    int num1 = 9;
    printfMultiple(num1);   
    printf("
");   

    int num2 = 1;
    printfMultiple1(num2);   
    printf("
");    

    int num3 = 1;
    printfMultiple2(num3);   

    return 0;
} 

//输出结果: 尖尖朝下
void printfMultiple(int i){
    if(0 == i){
        return;
    }
    else{
        //输出 i * 1 到 i * 9 的结果
        for (int j = 1; j <= i ; j++) {
            printf("%i * %i = %i	", i, j, i * j);
        }
        printf("
");
        // i 控制 行数  i-- 表示进行下一行的输出
        i--;
        printfMultiple(i);
    }
} 

// 如果 i 从 1 开始  i = 10 结束  就尖尖朝上了
void printfMultiple1(int i){
    if (10 == i) {
        return;
    }
    else{
        for (int j = 1; j <= i; j++) {
            printf("%i * %i = %i	", j, i, i * j);
        }
        printf("
");
        i++;
        printfMultiple1(i);
    }
} 

/*用递归替换方法体里的for循环
    接收参数 i j
    退出条件 j == i + 1
*/ 
void printfMultiple2(int i){
    if (10 == i) {
        return;
    }
    else{
        replaceFor(i, 1);
        printf("
");
        i++;
        printfMultiple2(i);
    }
}

//用这个方法替换到原来for循环的位置
void replaceFor(int num1, int num2){
    if (num2 == num1 + 1) {
        return;
    }
    else{
        printf("%i * %i = %i	", num2, num1, num1 * num2);
        num2++;
        replaceFor(num1, num2);
    }
}
/*
 输出结果:
     9 * 1 = 9  9 * 2 = 18  9 * 3 = 27  9 * 4 = 36  9 * 5 = 45  9 * 6 = 54  9 * 7 = 63  9 * 8 = 72  9 * 9 = 81
     8 * 1 = 8  8 * 2 = 16  8 * 3 = 24  8 * 4 = 32  8 * 5 = 40  8 * 6 = 48  8 * 7 = 56  8 * 8 = 64
     7 * 1 = 7  7 * 2 = 14  7 * 3 = 21  7 * 4 = 28  7 * 5 = 35  7 * 6 = 42  7 * 7 = 49
     6 * 1 = 6  6 * 2 = 12  6 * 3 = 18  6 * 4 = 24  6 * 5 = 30  6 * 6 = 36
     5 * 1 = 5  5 * 2 = 10  5 * 3 = 15  5 * 4 = 20  5 * 5 = 25
     4 * 1 = 4  4 * 2 = 8   4 * 3 = 12  4 * 4 = 16
     3 * 1 = 3  3 * 2 = 6   3 * 3 = 9
     2 * 1 = 2  2 * 2 = 4
     1 * 1 = 1     

     1 * 1 = 1
     1 * 2 = 2  2 * 2 = 4
     1 * 3 = 3  2 * 3 = 6   3 * 3 = 9
     1 * 4 = 4  2 * 4 = 8   3 * 4 = 12  4 * 4 = 16
     1 * 5 = 5  2 * 5 = 10  3 * 5 = 15  4 * 5 = 20  5 * 5 = 25
     1 * 6 = 6  2 * 6 = 12  3 * 6 = 18  4 * 6 = 24  5 * 6 = 30  6 * 6 = 36
     1 * 7 = 7  2 * 7 = 14  3 * 7 = 21  4 * 7 = 28  5 * 7 = 35  6 * 7 = 42  7 * 7 = 49
     1 * 8 = 8  2 * 8 = 16  3 * 8 = 24  4 * 8 = 32  5 * 8 = 40  6 * 8 = 48  7 * 8 = 56  8 * 8 = 64
     1 * 9 = 9  2 * 9 = 18  3 * 9 = 27  4 * 9 = 36  5 * 9 = 45  6 * 9 = 54  7 * 9 = 63  8 * 9 = 72  9 * 9 = 81     

     1 * 1 = 1
     1 * 2 = 2  2 * 2 = 4
     1 * 3 = 3  2 * 3 = 6   3 * 3 = 9
     1 * 4 = 4  2 * 4 = 8   3 * 4 = 12  4 * 4 = 16
     1 * 5 = 5  2 * 5 = 10  3 * 5 = 15  4 * 5 = 20  5 * 5 = 25
     1 * 6 = 6  2 * 6 = 12  3 * 6 = 18  4 * 6 = 24  5 * 6 = 30  6 * 6 = 36
     1 * 7 = 7  2 * 7 = 14  3 * 7 = 21  4 * 7 = 28  5 * 7 = 35  6 * 7 = 42  7 * 7 = 49
     1 * 8 = 8  2 * 8 = 16  3 * 8 = 24  4 * 8 = 32  5 * 8 = 40  6 * 8 = 48  7 * 8 = 56  8 * 8 = 64
     1 * 9 = 9  2 * 9 = 18  3 * 9 = 27  4 * 9 = 36  5 * 9 = 45  6 * 9 = 54  7 * 9 = 63  8 * 9 = 72  9 * 9 = 81
 */

 

原文地址:https://www.cnblogs.com/dx-230/p/4755989.html