鱼C论坛

 找回密码
 立即注册
查看: 3172|回复: 6

递归算法不懂

[复制链接]
发表于 2011-12-22 22:32:24 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
long recursion (int n);
void main()
{
   int n;
   long result;
   printf("input a integer number:\n");
   scanf("%d",&n);

   result = recursion(n);
   printf("%d!=%ld\n",n,result);
}

long recursion(int n)
{
   long temp_result;
   if( n < 0)
   {
         printf("cuowu");
   }
   else if(n==0||n==1)
   {
         temp_result = 1;
   }  
   else
   {
         temp_result = recursion(n-1)*n;
   }
   
   return  temp_result;
}
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-12-22 22:40:45 | 显示全部楼层
假如我输入5个数 编译器就从5一直想减 减到1或者0的时候此时程序结束=1
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-12-23 08:36:22 | 显示全部楼层
/recursion(n-1)是函数还是一个值啊,有人说recursion(2),是函数还值,这个我分不清,,,recursion(2),是形参吗,,,,谢谢你了  ,,,,
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-12-23 22:19:38 | 显示全部楼层
recursion(n-1)是一个值
这个值是通过实参n-1来调用函数recursion得到的
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-12-24 01:23:07 | 显示全部楼层

哦,这个不是函数吗?只有当函数返回时它才是值吧,,,我是新手,能跟我详细点解释吗<<, 感激不尽,,,能告诉具体怎么区分...
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-12-24 15:04:46 | 显示全部楼层
当n==0||n==1时,temp_result=1,此时recursion(n-1)就是一个实参,我是这样理解的,我也是个新手。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-12-24 21:58:05 | 显示全部楼层
只是n-1是个实参啊,recursion(n-1)还是一个函数把,只有当函数当n==0||n==1时,temp_result=1时,他才是一个值,这样理解对嘛, 谢谢上面的朋友的回答,小弟非常感激
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-10 08:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表