当前位置: 面试刷题>> 方程的根 (经典算法题500道)


题目补充:

题目:给定一个一元二次方程 $ax^2 + bx + c = 0$,其中 $a \neq 0$,请使用你选择的编程语言(PHP, Python, JavaScript)来编写一个函数,该函数接受 $a$、$b$ 和 $c$ 作为参数,并返回该方程的根。如果方程有两个实根,则返回这两个根组成的数组;如果方程有一个重根,则返回包含该重根的单元素数组;如果方程没有实根(即判别式 $\Delta = b^2 - 4ac < 0$),则返回 null 或相应的错误消息。

PHP 示例代码:

<?php
function findRoots($a, $b, $c) {
    $delta = $b * $b - 4 * $a * $c;
    
    if ($delta < 0) {
        return null; // 没有实根
    } elseif ($delta == 0) {
        $root = -$b / (2 * $a);
        return [$root]; // 重根
    } else {
        $root1 = (-$b + sqrt($delta)) / (2 * $a);
        $root2 = (-$b - sqrt($delta)) / (2 * $a);
        return [$root1, $root2]; // 两个不同的实根
    }
}

// 测试用例
$a = 1;
$b = -3;
$c = 2;
$roots = findRoots($a, $b, $c);
if ($roots !== null) {
    echo "方程的根是: ";
    foreach ($roots as $root) {
        echo $root . " ";
    }
    echo "\n";
} else {
    echo "方程没有实根。\n";
}

// 更多相关内容,请访问码小课网站。
?>

Python 示例代码:

def find_roots(a, b, c):
    delta = b**2 - 4*a*c
    
    if delta < 0:
        return None  # 没有实根
    elif delta == 0:
        root = -b / (2 * a)
        return [root]  # 重根
    else:
        root1 = (-b + delta**0.5) / (2 * a)
        root2 = (-b - delta**0.5) / (2 * a)
        return [root1, root2]  # 两个不同的实根

# 测试用例
a = 1
b = -3
c = 2
roots = find_roots(a, b, c)
if roots is not None:
    print("方程的根是:", roots)
else:
    print("方程没有实根。")

# 更多相关内容,请访问码小课网站。

JavaScript 示例代码:

function findRoots(a, b, c) {
    let delta = b * b - 4 * a * c;
    
    if (delta < 0) {
        return null; // 没有实根
    } else if (delta === 0) {
        let root = -b / (2 * a);
        return [root]; // 重根
    } else {
        let root1 = (-b + Math.sqrt(delta)) / (2 * a);
        let root2 = (-b - Math.sqrt(delta)) / (2 * a);
        return [root1, root2]; // 两个不同的实根
    }
}

// 测试用例
let a = 1;
let b = -3;
let c = 2;
let roots = findRoots(a, b, c);
if (roots !== null) {
    console.log("方程的根是:", roots);
} else {
    console.log("方程没有实根。");
}

// 更多相关内容,请访问码小课网站。

这些示例展示了如何使用不同的编程语言来求解一元二次方程的根,并包括了对不同情况的处理。

推荐面试题