| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1202 人关注过本帖
标题:C语言问题中的递归
只看楼主 加入收藏
lanke711
Rank: 9Rank: 9Rank: 9
来 自:流浪在天国之路
等 级:蜘蛛侠
威 望:7
帖 子:317
专家分:1437
注 册:2015-7-16
收藏
得分:2 
回复 8楼 新手啊啊啊啊
#include<stdio.h>
#include<iostream>
long fun(int x)
{
    long k;            //需要赋初值。
    if(x<=0)
    {
        x=0;
    }
    else
    {
        k=fun(x-2)+x;
    }
    return k;
}
void main()
{
    int x=100;
    long sum=0;
    sum=fun(x);
    printf("sum=%1d",sum);
    system("pause");
}

K需要赋初值,也就是需要初始化K。不然就会报错。

普通人之所以普通,是因为他们普遍有一个通病,那就是认为自己永远普通。
千夫所指,我亦坚持。就算被所有人误解,我也照样守护这一切。
我们总是觉得,这些灵魂的表情,傲慢自大,目中无人,其实,真正目中无人的是我们。它们傲慢的不过是表情,而我们傲慢的却是行为!
记得,是为了忘记!
只要想着有那么一天,我就能忍受现在的每一天!
灾难并不可怕,可怕的是心中没有了希望。
你以为我在天堂,其实我正在路上。
当你觉得自己走不到终点的时候,请不要放弃。或许你的对手也是这种感觉。
2015-08-10 15:35
lanke711
Rank: 9Rank: 9Rank: 9
来 自:流浪在天国之路
等 级:蜘蛛侠
威 望:7
帖 子:317
专家分:1437
注 册:2015-7-16
收藏
得分:0 
主要以下几点错误:楼主需要复习一下C语言基础知识
#include<stdio.h>
int fun(int x)            //形参int x在语句中没有使用。也就是前几楼说的莫名其妙的失踪了。
{
    int k;                //k变量,在这里它需要赋初值,不然编译出来的结果会出错。
    if(i==0)              //没有定义i变量,就直接进行if语句的判断。编译器无法编译其类型。
    {
        k=k*1;
    }
    else
    {
        k=fun(i-2)+i;
    }
    return k;
}
void main()
{
    void fun(int x);                //注意,调用自定义函数,不要加上类型,不管是函数还是实参。都不能出现类型。
    int i=100;
    int sum;
    sum=fun(i);
    printf("sum=%d",sum);
}

总结:1.int fun(int x)这个函数中,int x这个形参变量没有使用。
      2.int fun(int x)函数中,i变量没有定义,直接在if语句使用了。造成了编译器无法正确编译。
      3.K变量没有赋初值。编译一定会出错。
      4.main函数中调用函数出现基础不牢固的错误。  void fun(int x);调用函数不能有类型。正确的写法是:fun(x); 而且,x要先定义类型。才能作为                          fun()函数的实参。

请楼主注意多翻翻入门书。牢固一下基础。多自己思考,细心和耐心。

普通人之所以普通,是因为他们普遍有一个通病,那就是认为自己永远普通。
千夫所指,我亦坚持。就算被所有人误解,我也照样守护这一切。
我们总是觉得,这些灵魂的表情,傲慢自大,目中无人,其实,真正目中无人的是我们。它们傲慢的不过是表情,而我们傲慢的却是行为!
记得,是为了忘记!
只要想着有那么一天,我就能忍受现在的每一天!
灾难并不可怕,可怕的是心中没有了希望。
你以为我在天堂,其实我正在路上。
当你觉得自己走不到终点的时候,请不要放弃。或许你的对手也是这种感觉。
2015-08-10 15:57
lanke711
Rank: 9Rank: 9Rank: 9
来 自:流浪在天国之路
等 级:蜘蛛侠
威 望:7
帖 子:317
专家分:1437
注 册:2015-7-16
收藏
得分:0 
以下更正的代码
#include"stdafx.h"
#include<stdio.h>

int fun(int x)
{
    int k=0;
    int i = x;               //可以定义int i=x.如果没有int i等于x,就是形参x没有使用,就算在main函数调用,它的结果会是实参初始化的值。
    if (i == 0)                           
   
    {
        k = k * 1;
    }
    else
    {
        k = fun(i - 2) + i;
    }
    return k;
}
void main()
{
    int x=0;                //定义一个int x变量做为实参,并初始化为0.
    fun(x);            //调用fun函数
    int i = 100;
    int sum;
    sum = fun(i);
    printf("sum=%d", sum);
}

普通人之所以普通,是因为他们普遍有一个通病,那就是认为自己永远普通。
千夫所指,我亦坚持。就算被所有人误解,我也照样守护这一切。
我们总是觉得,这些灵魂的表情,傲慢自大,目中无人,其实,真正目中无人的是我们。它们傲慢的不过是表情,而我们傲慢的却是行为!
记得,是为了忘记!
只要想着有那么一天,我就能忍受现在的每一天!
灾难并不可怕,可怕的是心中没有了希望。
你以为我在天堂,其实我正在路上。
当你觉得自己走不到终点的时候,请不要放弃。或许你的对手也是这种感觉。
2015-08-10 16:06
luqiyihui
Rank: 2
等 级:论坛游民
帖 子:12
专家分:21
注 册:2015-8-11
收藏
得分:2 
程序代码:
#include<stdio.h>
int fun(int x)
{
    if(x<=0)
    {
        x=0;
    }
    else
    {
        x=fun(x-2)+x;
    }
    return x;
}
int main(void)
{
    int x=100;
    int sum=0;
    sum=fun(x);
    printf("sum=%d\n",sum);
    return 0;
}


正好这两天我学到了递归,这是我帮你改的,你看看!
感觉你对参数(形参)概念有点混淆!
2015-08-14 20:11
a853052879
Rank: 2
等 级:论坛游民
帖 子:39
专家分:10
注 册:2015-8-17
收藏
得分:2 
回复 8楼 新手啊啊啊啊
本人也是新手,但改了一下,我改了以后只有一个错误了,我也不懂为什么错了。你少了个形参i,第二行的int fun(int x)把x删掉。还有就是后面的void main()没有必要,删掉,改为int fun(int sum)。再把后面的int sum也删掉。改后的代码

#include <stdio.h>
int fun(int);
{
    int i,k;
    if(i=0)
    {
        k=k*1;
    }
    else
    {
        k=fun(i-2)+i;
    }
    return k;
}
int fun(int sum)
{
    int i=100;
    sum=fun(i);
    printf("sum=%d",sum);

}
但不知道为什么出错的是第一个{.....本人新手,如改得不对请见谅哈,希望共同进步,嘻嘻。

清风无泪
2015-08-18 20:20
快速回复:C语言问题中的递归
数据加载中...
 
   



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

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