【发布时间】:2011-01-22 08:22:27
【问题描述】:
我编写了以下示例代码来查找 N. (1+1/2+1/3+...1/N) 的谐波值。阅读用 BOLD 编写的代码中的 cmets 并帮助我找出发生这种情况的原因。
#include <stdio.h>
float harmonic(float n, float har) {
if(n==0) {
return 0;
}
if(n==1) {
printf("%f\n", har+1.0f);***/* This prints value 1.5000*/***
return har+1.0f;
}else{
harmonic(n-1, (har+(1/n)));
}
}
int main()
{
printf("%f\n", harmonic(2, 0.0f)); **/* But this prints value nan(Not a Number)*/**
return 0;
}
谢谢, 娜迦
【问题讨论】:
-
Naga - 始终确保编译时启用警告(gcc -
-Wall,MSVV -/Wall)。编译器会警告您您的问题。
标签: c tail-recursion nan