| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 835 人关注过本帖
标题:求助不清楚程序哪里错误
只看楼主 加入收藏
余晓旋
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2016-11-9
结帖率:100%
收藏
 问题点数:0 回复次数:8 
求助不清楚程序哪里错误
#include <stdio.h>
int age(int n)
{  
 
   if(n==1)
   {age=10;}
   else
   age(n-1)+2;
   return age;
}

int main()
{
   
    printf("第5个人的年龄是%d岁", age(5));
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册

搜索更多相关主题的帖子: include return 
2017-01-01 19:58
bjut_Allen
Rank: 9Rank: 9Rank: 9
来 自:平乐园工业技术学校
等 级:蜘蛛侠
威 望:8
帖 子:323
专家分:1223
注 册:2016-10-16
收藏
得分:0 
我不会递归。。(逃
#include <stdio.h>
int age(int n)
{  
   if(n==1)
   return 10;

   else
   return age(n-1)+2;

}
int main()
{
   
    printf("第5个人的年龄是%d岁", age(5));
    return 0;
}

Code is my life.
2017-01-01 20:10
核心利益
Rank: 2
等 级:论坛游民
威 望:2
帖 子:19
专家分:44
注 册:2016-12-31
收藏
得分:0 
你用的是递归法:一个递归函数包括两个基本要素:
一.基本条件,对应着初值;
二.一般条件,对应着递推式。
基本条件控制递归调用结束;一般条件控制递归调用向基本条件转化。
该题中基本条件:age=10; n==1时。
n==1时,return 10; 这是递归的出口,return 不能返回没有具体值得变量。
定义一个int 变量m 当然也可是其他n或i等。
改为下面应该可以:
#include <stdio.h>
int age(int n)
{  int m;
 
   if(n==1)
   return 10;
   else
   m=age(n-1)+2;
   return m;
}

int main()
{
   
    printf("第5个人的年龄是%d岁", age(5));
    return 0;
}
运行结果如下:
第5个人的年龄是18岁
-------------------------------
rocess exited with return value 0
ress any key to continue . . .
2017-01-01 20:54
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
这个是书本上的例子~return 就是把return里面表达式的值当函数值返回~~上面两种写法都可以~~~

[此贴子已经被作者于2017-1-1 21:06编辑过]


[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-01 20:57
余晓旋
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2016-11-9
收藏
得分:0 
回复 3楼 核心利益
age递归后不就是一个具体值了么
2017-01-01 21:31
余晓旋
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2016-11-9
收藏
得分:0 
回复 4楼 九转星河
不能直接返回age么
2017-01-01 21:31
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 6楼 余晓旋
age是一个函数名称,值为函数的地址值,age=10非法~~~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-01-01 21:43
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10587
专家分:43128
注 册:2014-5-20
收藏
得分:0 
以下是引用余晓旋在2017-1-1 21:31:44的发言:

不能直接返回age么

C与VB有别
2017-01-01 22:04
核心利益
Rank: 2
等 级:论坛游民
威 望:2
帖 子:19
专家分:44
注 册:2016-12-31
收藏
得分:0 
回复 5楼 余晓旋
return 函数的出口,只能返回一个值,给调用者,不能返回多个值,并且返回值的类型应与函数开头定义的函数的类型一致。
函数中可以有多个return 语句,但不表示函数可以返回多个值。
        int age(int n)
int表示函数值是整型的; age 为函数名;括号中的 n 为形式参数,int n 中的int为形式参数的类型为整型

赋值表达式语句:
  变量 = 表达式;  = 左边是变量,而age 是函数名不是变量;age=10;有问题。
同理: return age; age是函数名,<函数名>是用户为函数所起的名字,它是一个标识符,应符合C++标识符的一般命名规则,用户通过使用这个函数名和实参表可以调用该函数。
age 只是一个标识符;与函数值是两回事。
2017-01-02 09:07
快速回复:求助不清楚程序哪里错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015554 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved