实验8 函数——递归函数 下载本文

内容发布更新时间 : 2024/12/23 21:12:59星期一 下面是文章的全部内容请认真阅读。

淮海工学院计算机科学系

实验报告书

课程名: 《C语言程序设计A 》

题 目: 实验8 函数

——递归函数 班 级: 软嵌151 学 号: 2015123349 姓 名: 陈正宁

评语: 成绩: 指导教师: 批阅时间: 年 月 日

C语言程序设计实验报告

1、实验内容或题目

(1)用递归编写n!的函数,并在main主函数中调用此函数。

(2)有n个大小不同的盘片从大到小放在A柱上,另有B和C两个空柱,要求将这n个盘片从A柱搬到C柱上,在搬动过程中,每次只能搬一个盘片,而且小的不能放在大的之下。编写hanio函数实现搬迁过程。

(3)编写一个程序,求解皇后问题:在n×n的方格棋盘上,放置n个皇后,要求每个皇后不同行、不同列、不同左右对角线。

2、实验目的与要求

(1)要求熟练掌握函数的定义和调用,熟悉函数返回值的使用。 (2)熟悉函数调用的方式和过程。 (3)重点掌握递归函数的使用。

(4)要求实验的第2题采用递归函数编写,盘片的数目在main主函数中输入。提示:函数的参数定义如hanio(n,A,C,B),表示将n个盘片从A柱通过C柱搬到B柱。

(5)要求实验的第3题采用递归函数编写皇后的个数n由用户输入,其值不能超过20;采用整数数组q[N]求解结果,因为每列只能放一个皇后,q[i]的值表示第i个皇后所在的行号,即该皇后放在(q[i],i)的位置上。求解皇后问题的递归模型如下: place(i,n):若i=n,则n个皇后放置完毕,输出解(输出q数组元素) place(k,n):在第k列找一个合适位置i,放置一个皇后(即q[k]=i);place(k+1,n);其中,place(k,n)表示前面的第1,…,k-1个皇后放置好后,现在用于放置k, …,n的皇后。

3、实验步骤与源程序

⑴ 实验步骤

⑵ 源代码 (1)、

#include long fac(int n) { long f; if(n==0||n==1)

C语言程序设计实验报告

f=1; else f=n*fac(n-1); return (f); }

void main() { int n; printf(\请输入一个整数n:\ scanf(\ printf(\} (2)、

#include int main() { void hanio(int n,char A,char C,char B); int m; printf(\请输入盘片的数量:\ scanf(\ printf(\移动%d个盘片的步骤如下:\\n\ hanio(m,'A','B','C'); return 0; }

void hanio(int n,char one, char two, char three) { void move(char x,char y); if(n==1) move(one,three); else { hanio(n-1,one,three,two); move(one,three); hanio(n-1,two,one,three); } }

void move(char x,char y) { printf(\}