大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
举一个用递归调用函数求输入非负整数的阶乘的例子,如下:
网站建设哪家好,找创新互联!专注于网页设计、网站建设、微信开发、微信小程序、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了雷州免费建站欢迎大家使用!
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int fact(int n){
if(n==1 || n==0) return 1;
else return n*fact(n-1);
}
int main(void){
int x;
while(1){
printf("Input x(int 12=x=0)...\nx=");
if(scanf("%d",x),x=0 x=12)//x12时会使结果溢出
break;
printf("Error,redo: ");
}
printf("%d! = %d\n",x,fact(x));
return 0;
}
这是汉诺塔吧。
原理:(总共n个盘子)
1、将第一个位置(起始位置)上的n-1个盘子移到第二个位置上,此时第一个位置只剩第n个盘子
2、将第一个位置上的最后一个盘子(第n个盘子)移到第三个位置(目标位置)上,再将第二个位置上的n-1个盘子移到第三个位置上。
你不需要晓得n-1个盘子如何从一个位置移到另一个位置,让程序做。n--n-1--n-2......1,问题不断的小化,当n=1时,直接从第一个位置移到第三个位置,再倒过来推1--2--3......--n。最终问题就会被解决。
hanoi()函数就是将问题小化,使n--1
move()函数中char x是起始位置,char y是目标位置,即x--y.用A、B、C来显示盘子是如何移动的
1、编写递归函数求 1+2+3+……+n 的和;
2、编写递归函数求 2*4*6*……*(2n) 的积;
3、编写递归函数求 n 的阶乘;
4、汉诺塔问题;
实际上很多问题都可以通过递归来实现,但是看到你的情况估计较难的你实现不了,所以给你几个简单的练习一下,这样可以增强对递归的理解,等理解的较为深入后再做稍微难一些的。