为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

N阶乘的递归调用展开式

2017-09-19 4页 doc 24KB 47阅读

用户头像

is_531654

暂无简介

举报
N阶乘的递归调用展开式long fact(int n) 1 { 2  long k; 3  if (n<0) 4  { 5  printf( “Data error!\n”); 6  exit(0); 7  } 8  else if (n==0||n==1) k=1; 9  else k=n*fact(n-1); 10 return k; 11 } main() { int n; long f; printf(“Please input an integral number:\n”); scanf(“%d”, &n); f=fact(n); pri...
N阶乘的递归调用展开式
long fact(int n) 1 { 2  long k; 3  if (n<0) 4  { 5  printf( “Data error!\n”); 6  exit(0); 7  } 8  else if (n==0||n==1) k=1; 9  else k=n*fact(n-1); 10 return k; 11 } main() { int n; long f; printf(“Please input an integral number:\n”); scanf(“%d”, &n); f=fact(n); printf(“%d!=%ld\n”, n, f); } 求fact(4)的详解过程, 执行了的语句用红色表示 long fact(4) 1 { 2  long k; 3  if (4<0) 4  { 5  printf( “Data error!\n”); 6  exit(0); 7  } 8  else if (4==0||4==1) k=1; 9  else k=4*fact(4-1); /*断点1:调用fact(3)*/ 10 return k; 11 } long fact(3) 1 { 2  long k; 3  if (3<0) 4  { 5  printf( “Data error!\n”); 6  exit(0); 7  } 8  else if (3==0||3==1) k=1; 9  else k=3*fact(3-1); /*断点2:调用fact(2)*/ 10 return k; 11 } long fact(2) 1 { 2  long k; 3  if (2<0) 4  { 5  printf( “Data error!\n”); 6  exit(0); 7  } 8  else if (2==0||2==1) k=1; 9  else k=2*fact(2-1); /*断点3:调用fact(1)*/ 10 return k; 11 } long fact(1) 1 { 2  long k; 3  if (1<0) 4  { 5  printf( “Data error!\n”); 6  exit(0); 7  } 8  else if (1==0||1==1) k=1; 9  else k=2*fact(2-1); 10 return 1;  /*因为k=1,所以返回1*/ /*再把1返回到fact(2)的断点3, 看下程序*/ 11 } long fact(2) 1 { 2  long k; 3  if (2<0) 4  { 5  printf( “Data error!\n”); 6  exit(0); 7  } 8  else if (2==0||2==1) k=1; 9  else k=2*fact(2-1); /*返回断点3,把调用fact(1) /*返回的1代入到*/ /*fact(1)=1代入得k=2*1=2  */ 10 return 2;  /*从上行知k=2,把2返回到fact(3)的断点2,看下程序*/ 11 } long fact(3) 1 { 2  long k; 3  if (3<0) 4  { 5  printf( “Data error!\n”); 6  exit(0); 7  } 8  else if (3==0||3==1) k=1; 9  else k=3*fact(3-1); /*断点2:把调用fact(2) /*返回的2代入到*/ /*fact(2)=2代入得k=3*2=6  */ 10 return 6;  /*从上行知k=6,把6返回到fact(4)的断点1,看下程序*/ 11 } long fact(4) 1 { 2  long k; 3  if (4<0) 4  { 5  printf( “Data error!\n”); 6  exit(0); 7  } 8  else if (4==0||4==1) k=1; 9  else k=4*fact(4-1); /*断点1:把调用fact(3)*/ /*返回的6代入到fact(3)=6代入得k=4*6=24  */ 10 return 24; 11 } 最后计算出结果4!=4*3*2*1=24
/
本文档为【N阶乘的递归调用展开式】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索