#include <stdio.h>int factorial(int a); int Fibonacci(a);long Hanoi(a);void main(){} 函数递归调用:函数本身调用自身。类似于循环。 注意:编写递归程序类似于循环语句需要注意条件,函数调用到什么时候为止,否则会出现死循环。 1.利用递归实现阶乘int factorial(int a){ if(a==1) { return 1; } else { return a*factorial(a-1);//递归调用 } } 2.斐波那契数列,古典兔子问题。 int...
#include <stdio.h>
#include <stdlib.h>void f(int n);int main(void)
{f(10);return0;
}void f(int n)
{if(n==1){printf("1\n");return;}if(n==2){printf("1 1\n");return;}printf("1 1 ");int* p=(int*)malloc(sizeof(int)*n);p[0]=1;p[1]=1;int i;for(i=2; i<n; i++){p[i]=p[i-1]+p[i-2];printf("%d ", p[i]);}printf("\n");free(p);p=NULL;
} 原文:http://www.cnblogs.com/forever-youthful-forever-weeping/p/7295321.html
一、预处理指令1>所有的预处理指令都是以#号开头;2>预处理指令是在代码翻译成0,1之前执行;3>预处理指令最后没有分号;4>预处理指令的位置可以随便写;5>预处理指令有作用域,从编写指令的那一行开始,一直到文件结尾,可以用#undef取消宏定义的作用;预处理指令分3种 1> 宏定义 2> 条件编译 3> 文件包含二、宏定义1. 宏定义命名规则:1>大写字母 1#define COUNT 2>k开头首字母大写 #define kCount2. 宏定义开始和结束,注意结尾处没...
如题,快速排序其实很简单,可以理解为进阶版的“数组选定界限分大小”我把整个快排分为了两个函数,这样也更直观的了解算法流程,后期有时间再来讲解学习快速排序可以看两个视频:天勤 第二章:线性表划分8分钟讲解快速排序int partition(int a[],int left,int right)
{int i=left,j=right;int key=a[left];//选定枢轴 while(i<j){while(i<j&&a[j]>key)--j;if(i<j)a[i++]=a[j];while(i<j&&a[i]<key)++i;if(i<j)a[j--]=a[i];} a[i]...
//编写一个函数实现n^k,使用递归实现#include <stdio.h>int cifang( int x, int y )//2^3=2*2*2
{int sum = 0;if( y == 0 )sum = 1;elsesum = x * cifang( x, ( y - 1 ) );return sum;
}int main()
{printf("%d\n",cifang( 2,0 ));printf("%d\n",cifang( 3,2 ));printf("%d\n",cifang( 4,1 ));return 0;
}
原文:http://blog.csdn.net/zhaoyaqian552/article/details/44889767
C 错误处理C 语言不提供对错误处理的直接支持,但是作为一种系统编程语言,它以返回值的形式允许您访问底层数据。在发生错误时,大多数的 C 或 UNIX 函数调用返回 1 或 NULL,同时会设置一个错误代码 errno,该错误代码是全局变量,表示在函数调用期间发生了错误。您可以在 errno.h 头文件中找到各种各样的错误代码。所以,C 程序员可以通过检查返回值,然后根据返回值决定采取哪种适当的动作。开发人员应该在程序初始化时,把 err...
递归函数就是直接或者间接的调用自己本身的函数。
接触递归的时候我们经常会看到这个程序
#include<stdio.h>
#include<stdlib.h>
long factorial(int n)
{
if (n <= 0)
return 1;
else
return n*factorial(n - 1);
}
int main()
{
int n = 5;
printf("%ld\n", factorial(n));
system("pause");
return 0;
}这就是计算阶乘的一个递归函数!!但是它真的好吗?答案是 no!这个程序的执行效率非常低,因为每次调用函数时的...
这次实现的是递归,通过递归,我们可以尽量的减少代码量来实现功能。但缺点是递归的每层级调用都会耗掉一部分的内存。1int tobinary(int a){
2if(a/2)
3 printf("%d",tobinary(a/2));
4return a%2;
5}
6void main(void){
7int a = 63;
8 printf("%d",tobinary(a));
9 }核心:代码执行到第7层即条件为假时,不再调用函数本身。故开始依次的,从6~1层级别的返回每层所对应的结果,通过倒序的输出来实现十进制正数打印二进制。层级...
腾讯面试中被问到二叉树的非递归遍历实现,当时记得不太清楚,回来专门复习了非递归的实现,整理代码如下://采用二叉链表存储方式的二叉树,非递归中序遍历C语言实现代码
#include<stdio.h>
#include <malloc.h>
//函数结果状态代码
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
#define INFEASIBLE -1
#define OVERFLOW -2
//Status是函数的类型,其值是函数结果状态代码
typedef int Status;#define STACK_INI...
一、基本内容:C语言中的函数可以递归调用,即:可以直接(简单递归)或间接(间接递归)地自己调自己。要点:1、C语言函数可以递归调用。2、可以通过直接或间接两种方式调用。目前只讨论直接递归调用。二、递归条件采用递归方法来解决问题,必须符合以下三个条件:1、可以把要解决的问题转化为一个新问题,而这个新的问题的解决方法仍与原来的解决方法相同,只是所处理的对象有规律地递增或递减。说明:解决问题的方法相同,调用函...
递归函数 就是自身调用自身的函数,需要加条件来判定,否则无限调用 下面介绍一个简单的例子 1//递归函数整理 2long fun(int n)3{4long s;5if(n==1||n==2)6 s=2;7else 8 s=n-fun(n-1);910return s;
11}
1213int main(int argc, constchar * argv[])
14{
15 printf("%ld",fun(6));
16/*17 = 6 - (5 - fun(4))
18 = 6 - (5 - (4 - fun(3)))
19 = 6 - (5 - (4 - (3 - fun(2))))
20 = 6 - (5 - (...
<程序> —〉 <外部声明> | <函数定义><外部声明> —〉<头文件> | <变量> | <结构体> <头文件> —〉 #include<文件名><文件名> —〉 stdio.h丨stdlib.h丨string.h<结构体> —〉 <结构体声明〉|<变量><结构体声明> —〉 struct<标识符><函数定义> —〉 <类型说明><标识符><参数列表><复合语句><参数列表〉 —〉<类型说明><变量名><复合语句> —〉<变量>|<语句>|<复合语句>|&<语句> —〉<表达式语句〉|<选择语句>|<循环语句>|<跳跃语句...
//写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和.
//例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19
#include <stdio.h>
int DigitSum(int n)
{int sum=0;int m=0;if(n!=0){m=n%10;n=n/10;sum=m+DigitSum(n);}return sum;
}
int main ()
{int a;printf("请输入一个整数: ");scanf("%d",&a);printf("各位数之和为:%d\n",DigitSum(a));return 0;
}原文:http://blog.csdn.net/doudouwa1234/artic...
#include<stdio.h>
#include<math.h>
int main()
{int n;int sum = 1;scanf("%d", &n);for (int i = 1; i <= n; i++){sum *= i;}printf("%d", sum);return 0;
} //非递归
#include<stdio.h>
int floor(int n)
{if (n == 1){return 1;}else{return floor(n-1)*n;}
}
int main()
{int n;int ret;scanf("%d", &n);ret = floor(n);printf("%d", ret);return 0;
}原文:https://blog.51cto.com/14737345/2479827
1. 冒泡排序简介(默认从小到大排序) 核心思想:只比较相邻的两个元素,如果满足条件就交换 5 8 2 1 6 9 4 3 7 0目标:0 1 2 3 4 5 6 7 8 9 第一次排序: 5 < 8 不交换 5 8 2 1 6 9 4 3 7 0 8 >2 满足条件 交换.... 5 2 8 1 6 9 4 3 7 0 5 2 1 8 6 9 4 3 7 0 5 2 1 6 8 9 4 3 7 0 5 2 1 6 8 9 4 3 7 0 5 2 1 6 8 4 9 3 7 0 5 2 1 6 8 4 3 9 7 0 5 2 1 6 8 4 3 7 9 0 5 2 1 6 8 ...