C语言中用函数实现录入信息模块,C语言程序设计用函数实现模块化程序设计(73页)-原创力文档...

31/73 #include void main ( ) { int n, p; printf (

=?);scanf (%d, &n); p = fact (n); printf (%d!=%d\n, n, p); } int fact ( int n ) { int r; if ( n == 1 ) r = 1; else r=n* fact (n-1); /* 递归调用 */ return (r);} ? 用递归函数求 n! – n! = 1 当 n = 1 时 – n! = n * (n-1)! 当 n > 1 时 32/73 void main( ) { … p=fact(4); … } fact( 4 ) { … r=4*fact(3); … return 24 } fact( 3 ) { … r=3*fact(2); … return 6 } fact(2 ) { … r=2*fact(1); … return 2 } fact(1 ) { … r=1; … return 1 } 递归调用执行过程 递 推 回 推 33/73 3 .编制递归函数的方法 ⑴ 数值型问题递归函数的编程方法 对于数值型问题,首先要找出解题的数学公式, 这个公式必须是 递归定义 的,且所处理的 对象要 有规律地递增或递减 ,然后确定 递归结束条件 。 【例 8.17 】编一递归函数求 x n 。 思路:首先把 x n 转化成递归定义的公式 x n = 1 ( n=0 ) x × x n - 1 ( n>0 ) 再找出递归结束条件:当 n=0 时, x n =1 。 34/73 程序如下: #include long xn(int x,int n) { long f=0; if (n<0) printf(

<0,data error!\n); else if (n==0) f=1; else f=x*xn(x,n-1); return (f); } void main( ) { int n,x; long y; scanf(%d,%d,&x,&n); y=xn(x,n); printf(%ld\n,y); } 程序运行情况如下: 2,10 ? 1024 35/73 Hanoi( 汉诺塔问题) A B C

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值