递归函数返回意外结果

fud*_*din 1 c c++

我的函数从用户获取一个数字输入并递归地将数字'n'加到一.
输入5将总和1/5 + 1/4 + 1/3 + 1/2 + 1/1.

#include<stdio.h>
#include<conio.h>
//to 
float recursion(float num,float sum);
void main(void)
{
  float num=5,sum=0;
  //input num
  printf("%d",recursion(num,sum));

  getch();
}

float recursion(float num,float sum)
{
  // int sum=0; every time u run it the sum is assigned 0
  if( num==1)
    return 1;
  else
  {
    sum=sum+(1/num);
    num--;
    recursion(num,sum);
  }
  return sum;
}//recursion function ends
Run Code Online (Sandbox Code Playgroud)

问题是,它给0:/任何人都可以帮忙吗?

tan*_*ius 5

您应该返回递归调用的结果:

return recursion(num,sum);
Run Code Online (Sandbox Code Playgroud)

而不是return sum.

  • 并且'%d`应该更改为`%f`. (4认同)