c语言用递归方法求n!
“c语言用递归方法求n!”相关的资料有哪些?“c语言用递归方法求n!”相关的范文有哪些?怎么写?下面是小编为您精心整理的“c语言用递归方法求n!”相关范文大全或资料大全,欢迎大家分享。
c语言递归练习
dic递归基础练习题: 1. 求1+2+3+……+n的值 int sum(int a,int b) { if(b==a) return a; return a+sum(a+1,b); }
2. 求1*2*3*……*n的值 cheng(int begin,int end) { if(begin==end) return begin; return begin * cheng(begin+1,end); }
3. 数的全排列问题。将n个数字1,2,…n的所有排列按字典顺序枚举出猴 2 3 1 2 1 3 3 1 2 3 2 1
4. 数的组合问题。从1,2,…,n中取出m个数,将所有组合按照字典顺序列出。 如n=3,m=2时,输出: 1 2 1 3 2 3
5. 小猴子第一天摘下若干桃子,当即吃掉一半,又多吃一个.第二天早上又将剩下的桃子吃一半,又多吃一个.以后每天早上吃前一天剩下的一半另一个.到第10天早上猴子想再吃时发现,只剩下一个桃子了.问第一天猴子共摘多少个桃子? fruit(int begin,int times) { if(times==10) return begin; return fruit
c语言递归函数示例
1.编写计算X的Y次幂的递归函数getpower(int x,int ),并在主程序中实现输入输出。 #include"stdio.h"
long getpower(int x,int y)
{
if(y==1)
return x;
else
return x*getpower(x,y-1);
}
void main()
{
int num,power;
long answer;
printf("please input a number:");
scanf("%d",&num);
printf("please input the number's power series:");
scanf("%d",&power);
answer=getpower(num,power);
printf("结果是:%ld\n",answer);
}
结果说明:输入61再输入5求得61的5次幂为844596301.
2编写计算学生年龄的递归函数。
#include<stdio.h>
int age(int n)
{
int c;
if(n==1)
c=10;
els
C语言递归详细解答
1如何去掉羞怯那层茧
博学之,审问之,慎思之,明辨之,笃行之。正是江南好风景,落花时节又逢君。茕茕孑立,形影相吊。身无彩凤双飞翼,心有灵犀一点通。无情未必真豪杰,怜子如何不丈夫。递归
递归是设计和描述算法的一种有力的工具,由于它在复杂算法的描述中被经常采用,为此在进一步介绍其他算法设计方法之前先讨论它。
能采用递归描述的算法通常有这样的特征:为求解规模为N的问题,设法将它分解成规模较小的问题,然后从这些小问题的解方便地构造出大问题的解,并且这些规模较小的问题也能采用同样的分解和综合方法,分解成规模更小的问题,并从这些更小问题的解构造出规模较大问题的解。特别地,当规模N=1时,能直接得解。
【问题】 编写计算斐波那契(Fibonacci)数列的第n项函数fib(n)。
斐波那契数列为:0、1、1、2、3、……,即:
fib(0)=0;
fib(1)=1;
fib(n)=fib(n-1)+fib(n-2) (当n>1时)。
写成递归函数有:
int fib(int n)
{ if (n==0) return 0;
if (n==1) return 1;
if (n>1) return fib(n-1)+
用递归与非递归方式求Hermite多项式的值
实验题目 用递归与非递归方式求Hermite多项式的值 实验日期 2013年6月16日 一、 实验目的
本实验的目的是进一步理解递归设计与调用,理解函数递归调用的执行过程,比较递归与非递归方法,从中体会递归的优点。 二、实验问题描述
Hermite本身就是通过递归定义的,当n等于0或1时,问题的答案可以直接计算得到;当n>1时,当前问题的答案Hn(x)需要Hn-1(x)和Hn-2(x)的结果才能算出。
三、实验问题问题
递归是程序调用自身的编程,一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,他通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大减少了程序的代码量。
四、实验结果(程序)及分析
//ex5_17.cpp:编写输出Hermite多项式对应变量x的前n项值得递归函数
#include float P(int,float); //函数原型 int main() { int n; float x; cout<<\ cin>>n>>x; cout<<\ cout< float P(int n,float x) //
用递归非递归两种方法遍历二叉树
用递归、非递归两种方法遍历二叉树
数据结构(双语)
——项目文档报告
用递归、非递归两种方法遍历二叉树
专 业: 计算机科学与技术 班 级: 指导教师: 姓 名: 学 号:
- 1 -
用递归、非递归两种方法遍历二叉树
目 录
一、设计思想……………………………………………………….03 二、算法流程图…………………………………………………….04 三、源代码………………………………………………………….06 四、运行结果……………………………………………………….12 五、遇到的问题及解决…………………………………………….14 六、心得体会……………………………………………………….15
- 2 -
用递归、非递归两种方法遍历二叉树
一、设计思想
1.递归:
(1)主函数main()主程序要包括:定义的二叉树T、建树函数、先序遍历函数、中序遍历函数、后序遍历函数。
(2)建树函数定义一个输入的数是字符型的,当ch为空时,T
用递归非递归两种方法遍历二叉树
用递归、非递归两种方法遍历二叉树
数据结构(双语)
——项目文档报告
用递归、非递归两种方法遍历二叉树
专 业: 计算机科学与技术 班 级: 指导教师: 姓 名: 学 号:
- 1 -
用递归、非递归两种方法遍历二叉树
目 录
一、设计思想……………………………………………………….03 二、算法流程图…………………………………………………….04 三、源代码………………………………………………………….06 四、运行结果……………………………………………………….12 五、遇到的问题及解决…………………………………………….14 六、心得体会……………………………………………………….15
- 2 -
用递归、非递归两种方法遍历二叉树
一、设计思想
1.递归:
(1)主函数main()主程序要包括:定义的二叉树T、建树函数、先序遍历函数、中序遍历函数、后序遍历函数。
(2)建树函数定义一个输入的数是字符型的,当ch为空时,T
C语言-用牛顿迭代法和二分法求方程
1.用牛顿迭代法求该方程在1.5附近的根:2X^3-4X^2+3X-6=0
#include double func(double x) //函数 {return 2*x*x*x-4*x*x+3*x-6.0;} double func1(double x) //导函数 {return 6*x*x-8*x+3;} double root(double num) { double x0,x1; x0=num; if(func1(x0)==0.0) //若通过初值,函数返回值为0 {printf(\迭代过程中导数为0!\\n\ x1=x0-func(x0)/func1(x0); while((fabs(x1-x0))>1e-6) { x0=x1; x1=x0-func(x0)/func1(x0); } printf(\该方程在1.5附近的根为:%lf。\\n\return x1; } main() { root(1.5); } 2.用二分法求该方程的根:2X^3-4X^2+3X-6=0 #include double func(double x); double root
二叉树非递归遍历 C语言实现
二叉树非递归遍历 算法文档内有简要概括
#include <stdio.h>
#include <stdlib.h>
typedef struct BitNode
{
char data;
BitNode *lchild,*rchild;
int ltag,rtag;
}BitNode,*BitTree,ElemType; //树的结构体定义
typedef struct node
{
ElemType stack;
struct node *next;
}linkstack; //栈的结构体定义
int initstack(linkstack **s)//初始化一个带头结点的空栈
{
*s=(linkstack *)malloc(sizeof(linkstack));
if(*s==NULL)exit(-1);
(*s)->next=NULL;
return 1;
}
int push(linkstack *s,ElemType *x)//入栈操作,将x的数据元素插入栈s中,使x成为新的栈顶元素
{
linkstack *p,*q;
q=s;
p=(linkstack *)malloc(sizeof(linkstack)
C语言矩阵求逆程序(高斯-约旦法)
C语言矩阵求逆程序(高斯-约旦法)
高斯-约旦法
根据代数里面的知识,可以使用伴随矩阵也可以使用初等行变换来解求解,但是这样如果矩阵的维数较大的时候,使用这种方法,矩阵的维数变大时,计算量急剧的变大,计算时间和使用内存也会按着指数急剧上升,这样的算法的生命力不行。
使用以下这种算法的计算量和使用内存不会发生急剧的变化,特别是矩阵在维数大的时候。
高斯-约旦法(全选主元)求逆的步骤如下: 首先,对于 k 从 0 到 n - 1 作如下几步:
从第 k 行、第 k 列开始的右下角子阵中选取绝对值最大的元素,并记住次元素所在的行号和列号,在通过行交换和列交换将它交换到主元素位置上。这一步称为全选主元。 m(k, k) = 1 / m(k, k)
m(k, j) = m(k, j) * m(k, k),j = 0, 1, ..., n-1;j != k m(i, j) = m(i, j) - m(i, k) * m(k, j),i, j = 0, 1, ..., n-1;i, j != k m(i, k) = -m(i, k) * m(k, k),i = 0, 1, ..., n-1;i != k
最后,根据在全选主元过程中所记录的行、列交换的信息
C语言N02 C语言基本数据类型 2学时+2学时
第二章 基本数据类型
本章课程共2学时 其中:授课2学时,上机2学时
2.1 基本数据类型类型 符号 关键字 (signed) int (signed) short (signed) long 所占位数 16 16 32 数的范围
P45-32768(-215)~32767(215-1) -32768(-215)~32767(215-1) -2147483648(-231) ~2147483647(231-1)
有 整型无
unsigned intunsigned short unsigned long
1616 32
0~65535(216-1)0~65535(216-1) 0~4294967295(232-1)
有实型 有 有 无
floatdouble char unsigned char
3264 8 8
3.4e-38~3.4e381.7e-308 ~1.7e308 -128(-27)~127(27-1) 0~255(28-1)2
字符型2014-6-27
2.2 常量:程序运行时值不能改变的量 P39符号常量:用标识符代表的常量/*符号常量举例Ex02_01.c*/ #define PRICE 30 main( ) { int num, total; nu