递归函数 const关键字

来源:互联网 发布:合并矩阵 编辑:程序博客网 时间:2024/05/01 05:45
////  main.m//  LesssonRecursion////  Created by lanouhn on 14-7-31.//  Copyright (c) 2014年 Summer. All rights reserved.//#import <Foundation/Foundation.h>void eatAppleSummer(int number){    //对于递归来说,必须要有出口,也就是递归的结束标志.必有需要有结束,否则会形成死循环    if (number == 0) {        return;//return 后面没有内容,代表返回值类型为空void.    }    number--; //苹果个数减一  number = 3 //留一个苹果    printf("Summer eat P%d apple\n", 6 - number);//吃了一个苹果 //吃苹果    eatAppleSummer(number); //找自己吃苹果  //找人}//将一个整数正序输出 以及 逆序输出//例子: 54321 正序(Positive Sequence): 54321 逆序(Reverse order): 12345void printfPositiveSequence(int n){    if (n == 0) {        return; //如果没有可挑选的数字,直接返回,递归结束    }    //1.留一个数    int number = n % 10;//保存留下的数    //2.找下一个人    printfPositiveSequence(n / 10);    //3.输出留下的数    printf("%d", number);}void printfReverseOrder(int n){    if (n == 0) {        return; //如果没有可挑选的数字,直接返回,递归结束    }    //1.留一个数    int number = n % 10;//保留存下的数    //2.输出留下的数    printf("%d", number);    //3.找下一个人    printfReverseOrder(n / 10);}//求阶乘(Factorial), 5!int printfFactorial(int n){    //出口    if (n == 1) {        return 1;//如果求1的阶乘直接返回1    }    //1.留一个数    int number = n;    //2.求得n - 1的阶乘    int value = printfFactorial(n - 1);    //3.求n的阶乘    return number * value;}int main(int argc, const char * argv[]){//    eatAppleSummer(6);//    printfPositiveSequence(54321);//    printf("\n");//    printfReverseOrder(54321);//    printf("\n");//    printf("%d", printfFactorial(30));        //const 关键字    //const 修饰变量,把变量当做常量来看待,只能读,不可写    int a = 10;    int b = 2;    //const 修饰谁,谁不可变    //const 修饰*p不能通过指针变量p修改指向空间的内容,但是p可以重指向    const int *p = &a;    //测试//    *p = 20;//    p = &b;    //const 修饰*p1不能通过指针变量*p1修改指向空间的内容,但是p1可以重指向    int const *p1 = &a;    //测试//    *p1 = 20;//    p1 = &b;    //const 修饰p2, p2不可以重指向,但是可以通过*p2修改指向空间的内容    int * const p2 = &a;    //测试//    *p2 = 20;//    p2 = &b;    //const 修饰p3以及*p3, p3 不可以重指向,也不可以通过*p3修改修改指向空间的内容    const int * const p3 = &a;    //测试//    *p3 = 20;//    p3 = &b;    //const 让程序安全//    strlen(<#const char *#>)        return 0;}

0 0