C语言学习

您所在的位置:网站首页 printf输出空行 C语言学习

C语言学习

2023-03-16 17:10| 来源: 网络整理| 查看: 265

文章目录 一、基础概念二、递归案例三、递归与迭代

一、基础概念

什么是递归? 程序自己调用自己的编程技巧称为递归。它通常把一个大型复杂地问题层层转化为一个与原问题相似的规模较小的问题来求解。递归策略只需少量的程序就可以描述出解题过程所需要的多此重复计算,大大地减少了程序地代码量。 递归的两个必要条件 1、存在限制条件,当满足这个限制条件的时候,递归便不再继续。 2、每次递归调用之后越来越接近这个限制条件。

//最简单的递归 int main() { printf("hehe\n"); main(); return 0; } //死循环的输出hehe,但是会停下来,因为栈溢出了 二、递归案例

练习1: 接受一个整型值(无符号),按照顺序打印它的每一位。例如:1234,输出1 2 3 4

void print(int n) //n=1234 { if (n > 9) //说明数为两位,及两位以上的数 { print(n / 10); } printf("%d ", n % 10); } int main() { unsigned int num = 0; scanf("%d", &num);//1234 //递归 print(num); return 0; }

练习2:编写函数不允许创建临时变量,求字符串长度

#include //创建临时变量的情况 int my_strlen(char* str) //str中存储的是第一个字符的地址 { //计算字符串的长度 int count = 0; while (*str != '\0') //没有到字符串的结束位置 { count++; str++; //地址+1 } return count; } int main() { char arr[] = "bit"; //int len = strlen(arr); //求字符串长度 //printf("%d\n", len); //模拟实现 int len = my_strlen(arr); //arr是数组,数组传参,传过去的是首元素的地址,不是整个数组 printf("len=%d\n", len); return 0; }

my_strlen(“bit”); 1+my_strlen(“it”); 1+1+my_strlen(“t”); 1+1+1+my_strlen(“”) 1+1+1+0 3

//不创建临时变量 int my_strlen(char* str) { //递归的方法解决 if(*str!='\0') return 1+my_strlen(str+1) else return 0; } 三、递归与迭代

练习3:求n的阶乘

int Fac1(int n) { if (n if (n int a = 1; int b = 1; int c = 1; while (n > 2) { c = a + b; a = b; b = c; n--; } return c; }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3